假设我们有以下内容:
\u0052\
\u0022\u0058(Please no?)\u0058\u0022
转换通用字符名称并执行行拼接后,结果将为
R"X(Please no?)X"
哪个是有效的原始字符串。根据2.5.3,“在原始字符串的初始和最终双引号字符之间,在阶段1和2中执行的任何转换都将被还原”:
R"\u0058(Please no?)\u0058"
哪个仍然是有效的原始字符串。
这真的是这个过程的运作方式吗?如果没有,必须更改多少才能使上面的有效原始字符串?
答案 0 :(得分:1)
不,这不是这个过程的工作方式。
第2.3节第2段:
...如果 c-char-sequence , s-char-sequence 或 r之外的通用字符名称的十六进制值字符或字符串文字的-char-sequence 对应于控制字符...或基本源字符集中的字符,程序格式错误。
所以你的程序是不正确的。有些编译器可能会选择以您指定的方式解析通用字符名称,但这将是非标准扩展名。
除此之外,你做对了。如果你写了:
R\
"\u0058(Please no?)\u0058"
\u0058
将被还原。