在編碼過程中,由於字符串過長,我們需截取部分字符串,然後以省略號代替,但因爲中文佔兩個字節長度,而英文佔一個字節長度,而在UNICODE中,都是佔據兩個字節,但在界面顯示效果中,一箇中文佔據了兩個英文的長度,所以,我們需要重新計算下,而不是簡單的用CString的Left函數進行截取。
int num = 0;
int numc = 0;
int nume = 0;
bool bEndellipsis = false;
LPCTSTR p = szName;
while(*p)
{
if (*p > 0x80)
{
numc += 2;
}
else
{
nume++;
}
if (numc + nume > 28)
{
bEndellipsis = true;
break;
}
p++;
}
if (bEndellipsis)
{
strName = strName.Left(p - szName);
strName += _T("...");
}