首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++字符串类

C++字符串类
EN

Stack Overflow用户
提问于 2019-01-17 12:23:01
回答 3查看 169关注 0票数 4

我拿起一段C++代码在我的程序中使用,但我发现其中有一个字符串声明,我就是搞不懂。双引号应该标记字符串的开头和结尾,对吗?但是在这个字符串声明中,有很多双引号。编译器是如何解决这个问题的?

我试着编译,它编译了

代码语言:javascript
复制
using namespace cv;
using namespace std;

std::string keys = "{ help  h     | | Print help message. }"
"3: VPU }";
EN

回答 3

Stack Overflow用户

发布于 2019-01-17 13:12:28

根据[lex.string],带或不带编码前缀的引号(甚至是空引号)中的字符序列都是字符串形式的。

所以"{ help h | | Print help message. }"是一个字符串文字,"3: VPU }"也是。

根据[lex.string]/13

...adjacent字符串-文字连接在一起。

因此结果如下所示:

代码语言:javascript
复制
std::string keys = "{ help  h     | | Print help message. }3: VPU }";
票数 4
EN

Stack Overflow用户

发布于 2019-01-17 12:34:09

当两个或多个字符串相邻时,编译器会将它们连接在一起,但前提是它们之间不能用空格、制表符或换行符分隔。

下面的代码可以工作:

代码语言:javascript
复制
std::string keys = "abc" "def" "ghi";

但下面不会:

代码语言:javascript
复制
std::string keys = "abc","def","ghi";
票数 1
EN

Stack Overflow用户

发布于 2019-01-17 12:45:29

预处理器将连接字符串文字以形成单个字符串文字,即在任何赋值或其他使用之前,"abc" "def"将被连接到"abcdef"中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54229005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档