3

假设我们有以下内容:

\u0052\
\u0022\u0058(Please no?)\u0058\u0022

转换通用字符名称并进行线拼接后,结果将是

R"X(Please no?)X"

这是一个有效的原始字符串。根据 2.5.3,“在原始字符串的初始和最终双引号字符之间,在阶段 1 和 2 中执行的任何转换都将被还原”:

R"\u0058(Please no?)\u0058"

这仍然是一个有效的原始字符串。

这真的是这个过程的运作方式吗?如果不是,必须更改多少才能使上述内容成为有效的原始字符串?

4

1 回答 1

1

不,这不是这个过程的运作方式。

第 2.3 节第 2 段:

...如果字符或字符串文字的c-char-sequences-char-sequencer-char-sequence之外的通用字符名称的十六进制值对应于控制字符 ... 或基本源字符集中的字符,程序格式错误。

所以你的程序格式不正确。一些编译器可能会选择以您指定的方式解析通用字符名称,但这将是一个非标准扩展。

除此之外,你做对了。如果你写:

R\
"\u0058(Please no?)\u0058"

's将\u0058被还原。

于 2013-02-23T01:09:30.503 回答