コンパイラによる苦情なしに、この方法で文字列を出力できる方法を理解できません。
std::cout << "Hello " "World!";
実際、上記の行は次のように機能します。
std::cout << "Hello " << "World!";
この動作の説明はありますか?
Adjacent literal tokens are concatenated automatically, it's part of the standard.
6) Adjacent
ordinary stringliteral tokens are concatenated.Adjacent wide string literal tokens are concatenated.
(C++03)
これは弦の正常な動作です。最初の行では、指定された文字列がコンパイラによって自動的に連結されます。サンプルとして、非常に長い行を避けるために複数行も指定できます。
const char *strLine = "line 1 "
"line 1 "
"line 2 ";
そして、それは正常に動作します。2 行目がクリアされ、出力用に別の行が指定されます。
In C++, literals tokens can be concatenated thusly:
const char* thingy = "Hello" "World";
"Hello"
and "World
" are each a literal token.