gpt4 book ai didi

c++ - 在 C++ 源代码中使用 Unicode

转载 作者:IT老高 更新时间:2023-10-28 13:58:57 25 4
gpt4 key购买 nike

C++ 源代码的标准编码是什么? C++ 标准是否对此有所说明?我可以用 Unicode 编写 C++ 源代码吗?

例如,我可以在评论中使用汉字等非ASCII字符吗?如果是这样,是否允许完整的 Unicode 或只是 Unicode 的子集? (例如,那个 16 位的首页或其他名称。)

此外,我可以对字符串使用 Unicode 吗?例如:

Wstring str=L"Strange chars: â Țđ ě €€";

最佳答案

C++ 中的编码相当复杂。这是我的理解。

每个实现都必须支持来自基本源字符集的字符。其中包括第 2.2/1 节(C++11 中的第 2.3/1 节)中列出的常见字符。这些字符都应该适合一个 char。此外,实现必须支持一种使用称为 universal-character-names 的方式命名其他字符的方式,并且看起来像 \uffff\Uffffffff并且可以用来指代 Unicode 字符。它们中的一个子集可用于标识符(在附件 E 中列出)。

这一切都很好,但是从文件中的字符到源字符(在编译时使用)的映射是实现定义的。这构成了所使用的编码。以下是它的字面意思(C++98 版本):

Physical source file characters are mapped, in an implementation-defined manner, to the basic source character set (introducing new-line characters for end-of-line indicators) if necessary. Trigraph sequences (2.3) are replaced by corresponding single-character internal representations. Any source file character not in the basic source character set (2.2) is replaced by the universal-character-name that des- ignates that character. (An implementation may use any internal encoding, so long as an actual extended character encountered in the source file, and the same extended character expressed in the source file as a universal-character-name (i.e. using the \uXXXX notation), are handled equivalently.)

对于 gcc,您可以使用选项 -finput-charset=charset 更改它。此外,您可以更改用于在运行时表示值的执行字符。正确的选项是 -fexec-charset=charset for char(默认为 utf-8)和 -fwide-exec-charset=charset(根据 wchar_t 的大小,默认为 utf-16utf-32)。

关于c++ - 在 C++ 源代码中使用 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331690/

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