gpt4 book ai didi

c++ - C++ 中的 UTF-8 兼容性

转载 作者:可可西里 更新时间:2023-11-01 14:57:02 25 4
gpt4 key购买 nike

我正在编写一个程序,需要能够处理所有语言的文本。我的理解是 UTF-8 可以完成这项工作,但我遇到了一些问题。

我说 UTF-8 可以存储在 C++ 中的简单 char 中是否正确?如果是这样,为什么当我使用带有 charstringstringstream 的程序时会收到以下警告:warning C4566: character由通用字符名称“\uFFFD”表示的不能在当前代码页 (1252) 中表示。 (当我使用 wchar_twstringwstringstream 时,我没有收到该错误。)

另外,我知道UTF是可变长度的。当我使用 atsubstr 字符串方法时,我会得到错误的答案吗?

最佳答案

要使用 UTF-8 字符串文字,您需要在它们前面加上 u8 前缀,否则您将获得实现的字符集(在您的例子中,它似乎是 Windows-1252):u8 "\uFFFD" 是以空值结尾的字节序列,替换字符 (U+FFFD) 以 UTF-8 表示。它的类型为 char const[4]

由于UTF-8是变长的,所以各种索引都是以code unit做索引,而不是codepoints。由于 UTF-8 序列的可变长度性质,不可能对 UTF-8 序列中的代码点进行随机访问。如果你想要随机访问,你需要使用固定长度的编码,比如 UTF-32。为此,您可以在字符串上使用 U 前缀。

关于c++ - C++ 中的 UTF-8 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com