通过并置的c ++字符串文字串联

Sva*_*erg 0 c++ parsing

代码

std::string str = "Hello " "world";
std::cout << str << std::endl;
Run Code Online (Sandbox Code Playgroud)

编译和打印Hello world.同样的,

char chr[] = "abc" "def" "ghi";
std::cout << chr << std::endl;
Run Code Online (Sandbox Code Playgroud)

打印abcdefghi.这是如何以及为什么有效?

Nat*_*ica 5

这是[lex.phases]/6所涵盖的行为

相邻的字符串文字标记是连接的.

因此,在编译器实际开始编译代码之前,所有字符串文字只能分隔为什么将空格连接在一起.

"hello " "world";
"hello "                  "world";
"hello " 
"world";
Run Code Online (Sandbox Code Playgroud)

所有产品 "hello world";