【发布时间】:2011-03-22 11:14:22
【问题描述】:
如何在 Visual C 中获取多字节字符串的字节大小?有没有功能还是要我自己数字数?
或者,更一般地说,我如何获得 TCHAR 字符串的正确字节大小?
解决方案:
_tcslen(_T("TCHAR string")) * sizeof(TCHAR)
编辑:
我只是在谈论以 null 结尾的字符串。
【问题讨论】:
-
您的代码是正确的,用于计算字符串的大小(以字节为单位)。然而,“适用于 ... char 和 wchar_t ... 但不适用于多字节字符串”的语句令人困惑。
-
所以多字节字符串不包含空字节?
-
@Tilka:他们可以,但是您需要以其他方式知道长度,例如将其存储在字符串附带的整数中。 Null 终止的字符串,这是人们通常遇到的(以及 _tcslen、strlen 等所需要的),当然不包含 null 字节,除了 null 终止符。
-
更准确地说...多字节字符串可以包含空字节,但不能包含空字符。即,字符的前 8 位可能是全零,或者后 8 位也可能是全零,但是,如果整个字符全为零,则构成“字符串结尾”在这种情况下。
-
@Arafangion:但字符不是只有 8 位宽吗?
标签: c string character-encoding size multibyte