【发布时间】:2020-05-25 16:13:57
【问题描述】:
我想从 Unicode 字符串中获取每个字符。 如果这个问题不好,希望您的理解。
string str = "öp";
for (int i = 0; i < str.length(); i++) {
cout << str[i] << endl;
}
在这种情况下,str[0] 是一个损坏的字符,因为ö 的长度是 2。
我该如何管理它?我真的很感谢你的回答。谢谢。
【问题讨论】:
-
@AlexF 不,绝对不要那样做。
wchar_t彻底坏掉了。 -
Qt
QString类对此非常有用。 -
如果你在 Linux 上,我认为字符串(确切地说是
char)无论如何都是符合 unicode 的。 -
@theWiseBro 大多数现代 Linux 发行版确实使用 unicode 和 default 的 UTF-8 编码。这并不意味着他们总是这样做。你可以改变它,程序应该能够应付。
-
@theWiseBro 不是,也不能。
char只是一个字节,char字符串用作字节缓冲存储。它们与编码无关。这意味着它们是一种合适的存储介质,可以表示所有可能的 Unicode 代码点,但它们不允许对数据进行特定于编码的访问。特别是,访问单个chars 不一定解析单个 Unicode 代码点或字形,这是 OP 想要的。您需要使用支持 Unicode 的文本库。