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

时间:2016-08-02 13:06:51

标签: c++ parsing

代码

std::string str = "Hello " "world";
std::cout << str << std::endl;

编译并打印Hello world。同样,

char chr[] = "abc" "def" "ghi";
std::cout << chr << std::endl;

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

2 个答案:

答案 0 :(得分:5)

这是[lex.phases] / 6

所涵盖的行为
  

连接相邻的字符串文字标记。

因此,在编译器实际开始编译代码之前,所有字符串文字只是为了将空格连接在一起而分开。

"hello " "world";
"hello "                  "world";
"hello " 
"world";

所有产生"hello world";

答案 1 :(得分:3)

仅由空格分隔的字符串文字会自动连接see cppreference