下面的代码是cpp标准吗?
我以前见过它并且效果很好。
但是,我不确定这个标准是否已经存在。
#include <iostream>
int main(){
const char str[] = "a" "b";
std::cout << str << std::endl;
return 0;
}
预处理器有一个步骤 https://timsong-cpp.github.io/cppwp/lex.phases#1.6合并相邻的字符串文字。如果分隔字符串文字的唯一因素是空格,那么它们将合并到一个组合字符串文字中。
完整的过程描述于[词法字符串]/7 https://timsong-cpp.github.io/cppwp/lex.string#7
在翻译阶段 6 ([lex.phases]) 中,相邻的字符串文字被连接起来。如果两个字符串文字具有相同的编码前缀,则生成的连接字符串文字具有该编码前缀。如果一个字符串文字没有编码前缀,则将其视为与另一操作数具有相同编码前缀的字符串文字。如果 UTF-8 字符串文字标记与宽字符串文字标记相邻,则程序格式错误。任何其他串联都通过实现定义的行为有条件地支持。
[注3:这种串联是一种解释,而不是转换。因为解释发生在翻译阶段 6(在字符串文字内容已被编码为字符串文字的关联字符编码之后),所以字符串文字的初始原始性对连接的解释或格式良好性没有影响。 ——尾注]
Table 13 has some examples of valid concatenations.
source means source means source means
------------------------------------------------------
|u"a" u"b" u"ab" | U"a" U"b" U"ab" | L"a" L"b" L"ab" |
|u"a" "b" u"ab" | U"a" "b" U"ab" | L"a" "b" L"ab" |
| "a" u"b" u"ab" | "a" U"b" U"ab" | "a" L"b" L"ab" |
------------------------------------------------------
连接字符串中的字符保持不同。
[示例2:
“\xA”“B”
包含连接后的两个字符“\xA”和“B”(而不是单个十六进制字符“\xAB”)。 —结束示例]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)