【发布时间】:2015-07-27 11:53:52
【问题描述】:
我正在使用此代码修剪一个长 std::string 以将其放入文本容器中。
std::string AppDelegate::getTrimmedStringWithRange(std::string text, int range)
{
if (text.length() > range)
{
std::string str(text,0,range-3);
return str.append("...");
}
return text;
}
但是对于像HINDI "हिन्दी" 这样的其他语言,std::string 的长度是错误的。
我的问题是如何在所有测试用例中检索 std::string 的准确长度。
谢谢
【问题讨论】:
-
std::string仅支持 ASCII。您可能需要std::wstring或类似的数据结构 -
我可以将 std::string 更改为 std::wstring 吗?反之亦然?
-
@AndyG:
std::string不支持任何特定的编码。它只存储字节。它完全能够存储非 ascii 字符串。例如 UTF-8。 -
@AndyG,我不知道那个字符串的确切长度,它看起来像“3”,如果你使用 wstring,长度是 6。正如 Benjamin Lindley 指出的那样,只有 std::string存储字节,内部表示取决于您的设置。