#include <string>
#include <tchar.h>
int main()
{
char str[] = "Hello!";
printf("字符串长度:%d,字节数:%d\n", strlen(str), sizeof(str)); //6 7
wchar_t wstr[] = L"Hello!";
printf("宽字符串长度(strlen):%d,字节数:%d\n", strlen((char*)wstr), sizeof(wstr)); //1 14
printf("宽字符串长度(wcslen):%d,字节数:%d\n", wcslen(wstr), sizeof(wstr)); //6 14
TCHAR t_str[] = _T("Hello!");
printf("字符串长度(wcslen):%d,字节数:%d\n", _tcslen(wstr), sizeof(wstr)); //6 14
system("pause");
return 0;
}
-
strlen、wcslen均用于获取字符串长度,不过后者是用与宽字符集
-
对于宽字符集如果用strlen,得到长度为1:
"Hello!"即 0x48 0x65 0x6C 0x6C 0x6F 0x21 也就是48 65 6C 6F 21
L"Hello!"即 0x0048 0x0065 0x006C 0x006C 0x006F 0x0021也就是48 00 65 00 6C 00 6C 00 6F 00 21 00
但是strlen遇到00当作是结束符,所以长度返回1
-
使用宽字符时字符串长度不变,只是字节数变了,宽字符一个字符占2个字节