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