web-dev-qa-db-ja.com

C ++ 11では、生の文字列リテラルに複数の行を含めることができますか?

これはC++ 11で合法ですか?

string s = R"(This is the first line
And this is the second line)";

...と同等です:

string s = "This is the first line\nAnd this is the second line";
32
Janik Zikovsky

はい、それは完全に有効です。 こちら を参照してください。

また、(ドラフト)標準2.14.5/4から:

生の文字列リテラルのソースファイルの改行は、結果の実行で改行になりますstring-literal。次の例の行の先頭に空白がないと仮定すると、アサートは成功します。

const char *p = R"(a\
b
c)";
assert(std::strcmp(p, "a\\\nb\nc") == 0);
36
Ferruccio