小编Avv*_*vva的帖子

为什么这在字符串文字连接中不是格式错误的?

\n

在翻译阶段 6 (5.2),相邻的字符串文字被连接起来。如果两个字符串文字具有相同的编码前缀,则生成的连接字符串文字具有该编码前缀。如果一个字符串文字没有编码前缀,则将其视为与另一操作数具有相同编码前缀的字符串文字。如果 UTF-8 字符串文字标记与宽字符串文字标记相邻,则程序格式错误。任何其他串联都通过实现定义的行为有条件地支持。[注意:这种串联是一种解释,而不是转换。因为解释发生在翻译阶段 6(在字符串文字中的每个字符已翻译为相应字符集中的值之后),所以 string-literal\xe2\x80\x99s 的初始原始性对解释或良好没有影响。连接的形式。\n\xe2\x80\x94end note]

\n
\n

因此,要特别注意这句话中的注释:如果解释发生在每个字符被翻译成值之后,那么为什么不也定义并有条件支持实现宽字符串文字和 UTF-8 的串联呢?

\n

来源:http://www.open-std.org/jtc1/sc22/wg21/docs/standards(2020 年版)

\n

c++ language-lawyer

5
推荐指数
0
解决办法
119
查看次数

C++ 内部的字符编码?

如果我创建一个带有前缀的字符串文字u8,机器代码是否知道并说该变量的相应值应该以 UTF-8 编码?

这样无论我在哪里运行程序,计算机每次都知道如何对其进行编码?或者机器代码没有说,像这样和这样编码?

因为如果我用普通 char 编码一些东西,用 UTF-8 编码一些东西(例如使用 u8),那么如果机器代码没有说明任何内容,那么有什么区别以及计算机如何知道编码?

c++

2
推荐指数
1
解决办法
574
查看次数

标签 统计

c++ ×2

language-lawyer ×1