我如何确定一个 std::wstring
字符串的长度(字符数)?
myStr.length()
返回字节大小(我觉得),而不是字符数。我需要创建自己的函数来找到字符数,还是有本地的 C++ 方法或本地的 WinAPI 方法可以使用?
std::wstring::length()
将为您提供字符数,其中character被定义为wstring
对象的原子单位,即wchar
。当标准引用characters
时,这就是其含义(有关在标准中使用该词的更多详细信息,请参见此帖子)。wchar
是否对应于一个Unicode字符取决于wstring
内部使用的编码方式。如果使用UTF-16,这通常(但不一定)是情况,那么对于基本多语言平面(即所有从ISO-8859派生的字符集以及大多数常用的CJK字符,但不包括某些更奇特的(例如古典汉字)字符),一个wchar
只会对应一个Unicode字符(*)。如果您想在这种情况下正确计算所有 Unicode 字符的数量,则需要使用支持Unicode的库(例如ICU)或自己编写代码。
(*)如果使用了组合字符,则会出现其他问题,正如@一二三正确指出的那样。最好使用适当的库来正确计算它们。
wchar
(反之亦然)。 - 一二三
myStr.length()
可以得到字节数(我认为),但这并不是字符数。你为什么这样认为? - ildjarn因此,
.size()`不会给我字符数。 - sazrtolower()
函数来实现。请参考 cppreference 上给出的示例:http://en.cppreference.com/w/cpp/locale/ctype/tolower。 - jogojapan