UNICODE下調整字符串長度包含中英文(以字節爲長度)

在編碼過程中,由於字符串過長,我們需截取部分字符串,然後以省略號代替,但因爲中文佔兩個字節長度,而英文佔一個字節長度,而在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("...");
			}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章