C++ raw string literal

raw string literalspa

以   R"(  開頭, )" 結束,是能夠跨越多行的字符串字面值,轉義字符如 \t\n 在raw string literal中是普通的文本,而再也不是轉義字符,code

下面代碼blog

 
1 const char* text = R"(Hello\t\n
2 "World"!)";
3 std::cout << text;
 
將輸出
Hello\t\n
"World"!

若是不使用raw string literal,上面代碼必須這樣寫 const char* text = "Hello\\t\\n\n\"World\"!"; 字符串

 

由於raw string literal以 )"結束,不能在raw string literal 中再包含字符 )"。下面代碼是非法的。string

const char* text = R"(Embedded )" in string)";    // Error!

若是你想在raw string literal中包含 )",須要使用raw string literal擴展語法:it

const char* raw = R"d-char-sequences(raw-char-sequences)d-char-sequences"

raw-char-sequences 是原始的文本,首尾的 d-char-sequences 是分隔符,首尾分隔符必須同樣,最長爲16個字符,並且 )d-char-sequences 不能在 raw-char-sequences 中出現。io

以前的代碼能夠這樣改正:class

const char* text = R"--(Embedded )" in string)--";

 

推薦閱讀:Professional C++ 4th 2018版,本文內容基本摘自 Professional C++ 4th 英文版。擴展

相關文章
相關標籤/搜索