<<<<<< (至少在我看来)

时间:2012-10-09 13:59:25

标签: c++ cout

我无法意识到如何在没有编译器投诉的情况下以这种方式打印字符串:

std::cout << "Hello " "World!";

事实上,上述行的工作原理如下:

std::cout << "Hello " << "World!";

这种行为有解释吗?

3 个答案:

答案 0 :(得分:11)

相邻的文字标记会自动连接,这是标准的一部分。

2.1翻译阶段[lex.phases]

  

6)连接相邻的普通字符串文字标记。 连接相邻的宽字符串文字标记。

(C ++ 03)

答案 1 :(得分:1)

在C ++中,文字标记可以连接在一起:

const char* thingy = "Hello" "World";

"Hello""World“均为文字标记。

答案 2 :(得分:1)

这是字符串的正常行为。在第一行中,指定的字符串由编译器自动连接。作为示例,您还可以指定多行以避免很长的行。

const char *strLine = "line 1 "
                      "line 1 "
                      "line 2 ";

它会正常工作。第二行被清除,指定另一行输出。