我拿起一段C++代码在我的程序中使用,但我发现其中有一个字符串声明,我就是搞不懂。双引号应该标记字符串的开头和结尾,对吗?但是在这个字符串声明中,有很多双引号。编译器是如何解决这个问题的?
我试着编译,它编译了
using namespace cv;
using namespace std;
std::string keys = "{ help h | | Print help message. }"
"3: VPU }";发布于 2019-01-17 13:12:28
根据[lex.string],带或不带编码前缀的引号(甚至是空引号)中的字符序列都是字符串形式的。
所以"{ help h | | Print help message. }"是一个字符串文字,"3: VPU }"也是。
...adjacent字符串-文字连接在一起。
因此结果如下所示:
std::string keys = "{ help h | | Print help message. }3: VPU }";发布于 2019-01-17 12:34:09
当两个或多个字符串相邻时,编译器会将它们连接在一起,但前提是它们之间不能用空格、制表符或换行符分隔。
下面的代码可以工作:
std::string keys = "abc" "def" "ghi";但下面不会:
std::string keys = "abc","def","ghi";发布于 2019-01-17 12:45:29
预处理器将连接字符串文字以形成单个字符串文字,即在任何赋值或其他使用之前,"abc" "def"将被连接到"abcdef"中。
https://stackoverflow.com/questions/54229005
复制相似问题