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";
<</div>
div class="answers"> 预处理器将连接字符串文字以形成单个字符串文字,即 "abc" "def"
将在任何分配或其他使用之前连接成"abcdef"
。