在C++11中,原始字符串字面量是否可以跨多行?

42

这在C++11下是否合法?

string s = R"(This is the first line
And this is the second line)";

...等同于:

string s = "This is the first line\nAnd this is the second line";

2
是的!它就是。 - P0W
1个回答

45

没问题,这是完全有效的。请参见这里

此外,在(草案)标准2.14.5 / 4中:

  

原始字符串字面值中的源文件新行会导致执行结果的新行字符串字面值。 假设以下示例中的行开头没有空格,则断言将成功:

const char *p = R"(a\
b
c)";
assert(std::strcmp(p, "a\\\nb\nc") == 0);

1
可能你可以引用一些标准或参考资料的部分。 - P0W
非常酷 - 我认为 C++11 的原始字符串字面量将非常方便! - Janik Zikovsky
@Bakuriu - 这是我的复制/粘贴错误。我不知何故在第一行丢失了尾随的\和\\n在断言中。 - Ferruccio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接