取得字符串長度的幾種方法及區別

sizeof :取得字符串的字節長度,包含 '/0'。
strlen:取得多字節字符串中字符長度,不包含 '/0'。
wcslen:取得寬字節字符串中字符長度,不包含 '/0'。
tcslen:取得寬字節/多字節字符串中字符長度,不包含 '/0'。

如:

WCHAR wcsStr[] = L"ABCD";
char chrStr[] = "ABCD";
TCHAR tcsStr[] = _T("ABCD");

//寬字符
int wcslen01 = wcslen(wcsStr); //4 
int wcslen02 = sizeof wcsStr;  //10

//多字節字符
int chrlen01 = strlen(chrStr); //4
int chrlen02 = sizeof chrStr;  //5

//多字節字符
int tcslen01 = _tcslen(tcsStr); //4
int tcslen02 = sizeof tcsStr;   //5

_tcslen
說明:求Unicode字符串的長度,使用跟非Unicode的strlen一樣
參數:Unicode字符串
返回值:該Unicode字符串長度

lstrlen該函數返回指定字符串的字節長度(ANSI版)或字符長度(雙字節標準版);其中不包括終止NULL字符。

_t開頭的都是VC++定義的宏,用來匹配不同的版本。
如:main在VC++中有_tmain

帶_t的是unicode版本,不帶_t的是單字節版本
strlen是計算字符串長度的,是針對ANSI字符串的,對於UNICODE字符串,計算長度用wcslen來計算。
_tcslen則是一個宏,當定義了_UNICODE時,它被解釋爲wcslen,如果沒有定義_UNICODE時,它被解釋爲strlen。

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