計算UTF8中英文混合字串的長度

2021-09-24 20:24:36 字數 870 閱讀 6944

有兩個字串, 需要根據最長的串求出乙個合理的大小, 這個大小等於最長串大小, 並繪製成分式效果, 預設 乙個漢字佔 三個utf8字元,乙個字母佔1個 ,   直接跟strlen 計算長度將不準確.

真實效果如圖:

要計算中間串占用長度先得分以下三步:

1:  utf8 的中英文混合串 轉為unicode 字串;

2:  區分中文和英文, 分別計算大小;

3: 將所有字串組合直接用渲染引擎繪製(gdi,opengl等都可以);

**如下:

utf8轉unicode:

std::wstring utf82unicode(const char* str)

求混合串長度:

bool ischchar(wchar_t no)

// uni >= 『0』 && uni <= 『9』 (*s >= 『a』 && *s <= 『z』) || (*s >= 『a』 && *s <= 『z』)

int calcstringlength(string & str, int defaultchinesecharlen = 2)

return len;

}組合成乙個串:

string expressionnode::baselinecalc(expressionnode * linenode, string & v1, string & v2)

gsstring retstr("");

if (len1 > len2)

else }

string tmp = "\n";

for (int i = 0; i < len; i++)

tmp += "-";

tmp += "\n";

return tmp;

Django 擷取中英文混合字串

在列表顯示的時候,我們常常要擷取文章標題的長度,python擷取字串,本來很簡單的,但是中文和英文的寬度不一樣,在頁面看起來長度就差很遠了 length7 這是中文長度七 粗略來算 是粗略哦 乙個中文字元的寬度大概等於兩個英文本元的寬度。乙個中文字元的utf8編碼長度為3,gbk為2 所以將使用gb...

C 中英文混合字串對齊

private static string padrightex string str,int totalbytecount string w str.padright totalbytecount dcount return w 這段 來自 的改進。採用utf 8 coding.getbyteco...

PHP中獲取中英文混合字串長度

今晚在寫框架的表單驗證類時,需要判斷某個字串長度是否在指定區間內,很自然地,想到了php中的strlen函式。str hello world echo strlen str 輸出12 然而在php自帶的函式中,strlen及mb strlen都是通過計算字串所佔位元組數來計算長度的,在不同的編碼情況...