簡體   English   中英

C ++字符串類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM