字符串的長度和占用的存儲字節有什么區別?
長度是字符串的字符數,比如:char* p = "1234";那么p的字符數就是4,4就是其長度,也可以理解為strlen和wcslen對字符串的返回值。
占用存儲字節是該字符串在內存中所占用的存儲空間的表示,還是上面那個字符串,其占用存儲空間就是5,包括一個空字節,所以其占用字節數為5。
因此C風格ASCII字符串的長度和其字符數是不同的,除了C風格字符串(以空字節結尾的字符串),其他ASCII字符串也有長度和占用存儲空間相同的情況,比如STL中的string其內存占用空間就和字符長度相同,因為它不是用空字符來標識字符串結尾的。
所以對于ASCII字符串,其長度和所占字節數可能相同。
而對于寬字符wchar_t或unicode,其字符長度肯定和所占字節數不同。
wchar_t s[] = L"1234";sizeof(s)是10,wcslen(s)是4。知道了吧,簡單點這2個概念也可以理解為sizeof和strlen或wcslen返回的長度。