繁体   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