天天看點

取得字元串長度的幾種方法及差別

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。