5

コンパイラによる苦情なしに、この方法で文字列を出力できる方法を理解できません。

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

実際、上記の行は次のように機能します。

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

この動作の説明はありますか?

4

3 に答える 3

11

Adjacent literal tokens are concatenated automatically, it's part of the standard.

2.1 Phases of translation [lex.phases]

6) Adjacent ordinary string literal tokens are concatenated. Adjacent wide string literal tokens are concatenated.

(C++03)

于 2012-10-09T13:59:57.403 に答える
1

これは弦の正常な動作です。最初の行では、指定された文字列がコンパイラによって自動的に連結されます。サンプルとして、非常に長い行を避けるために複数行も指定できます。

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

そして、それは正常に動作します。2 行目がクリアされ、出力用に別の行が指定されます。

于 2012-10-09T14:25:00.320 に答える
1

In C++, literals tokens can be concatenated thusly:

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

"Hello" and "World" are each a literal token.

于 2012-10-09T14:00:31.207 に答える