C++ raw string literal


raw string literal

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

下面代碼

 
        
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 中再包含字符 )"。下面代碼是非法的。

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

如果你想在raw string literal中包含 )",需要使用raw string literal擴展語法:

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 中出現。

之前的代碼可以這樣改正:

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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM