[英]C++ string class
我選擇了一個在我的程序中使用的C ++代碼,但我在其中找到了一個我無法理解的字符串聲明。 雙引號應該標記字符串的開頭和結尾,對嗎? 但是在這個字符串聲明中,有很多雙引號。 編譯器如何解決這個問題?
我嘗試編譯並編譯
using namespace cv;
using namespace std;
std::string keys = "{ help h | | Print help message. }"
"3: VPU }";
帶引號(或甚至空引號)的帶或不帶編碼前綴的字符序列是[lex.string]的字符串文字。
所以"{ help h | | Print help message. }"
是一個字符串文字,因此是"3: VPU }"
。
並根據[lex.string] / 13 :
...相鄰的字符串文字是連接的。
所以結果如下:
std::string keys = "{ help h | | Print help message. }3: VPU }";
當兩個或多個字符串彼此相鄰時,它們由編譯器連接,前提是它們不應由空格,制表符或換行符之外的任何內容分隔。
下面的代碼將起作用:
std::string keys = "abc" "def" "ghi";
但下面不會:
std::string keys = "abc","def","ghi";
預處理器將連接字符串文字以形成單個字符串文字,即"abc" "def"
將在任何賦值或其他用途之前連接成"abcdef"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.