gpt4 book ai didi

c++ - string 如何处理非 ascii 符号而 char 不处理?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:15 30 4
gpt4 key购买 nike

我理解 C++ 中的 char 只是一种整数类型,它将 ASCII 符号存储为 0 到 127 之间的数字。斯堪的纳维亚字母 'æ'、'ø' 和 'å' 不是在 ASCII 表中的 128 个符号中。

所以很自然地,当我尝试 char ch1 = 'ø' 时,我得到一个编译器错误,但是 string str = "øæå" 工作正常,即使字符串使用charright?

string 是否以某种方式转换为 Unicode?

最佳答案

在 C++ 中,有源字符集执行字符集。源字符集是您可以在源代码中使用的字符集;但这不必与运行时可用的字符一致。

如果您在源代码中使用不在源字符集中的字符,会发生什么情况是由实现定义的。显然 'ø' 不在您编译器的源字符集中,否则您不会收到错误;这意味着您的编译器文档应该包括对这两个代码示例的解释。您可能会发现 str 中确实包含某种字节序列,这些字节序列构成了一个字符串。

为避免这种情况,您可以使用字 rune 字而不是在源代码中嵌入字符,在本例中为 '\xF8'。如果您需要使用不在执行字符集中的字符,您可以使用 wchar_twstring

关于c++ - string 如何处理非 ascii 符号而 char 不处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23284279/

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