我们可以像这样定义一个多行的字符串:
const char* text1 = "part 1"
"part 2"
"part 3"
"part 4";
const char* text2 = "part 1\
part 2\
part 3\
part 4";
使用原始文字,我尝试了所有,没有人工作
std::string text1 = R"part 1"+
R"part 2"+
R"part 3"+
R"part 4";
std::string text2 = R"part 1"
R"part 2"
R"part 3"
R"part 4";
std::string text3 = R"part 1\
part 2\
part 3\
part 4";
std::string text4 = R"part 1
part 2
part 3
part 4";
答案 0 :(得分:27)
只需按照您的意愿书写:
std::string text = R"(part 1
part 2
part 3
part 4)";
你没有放入的另一件事是整个字符串周围所需的一对括号。
还要记住,您可能会放置以保持代码格式化的部分2-4行的任何前导空格,以及与其他人一起获得第1部分的主要换行符,因此它确实使其成为有时难以在代码中看到。
对于保持整洁,但仍使用原始字符串文字可能合理的选项是连接换行符:
R"(part 1)" "\n"
R"(part 2)" "\n"
R"(part 3)" "\n"
R"(part 4)"
答案 1 :(得分:26)
请注意,原始字符串文字由R"(
和)"
分隔(或者如果您需要额外的“唯一性”,则可以通过在引号和parens之间添加字符来添加到分隔符。)
#include <iostream>
#include <ostream>
#include <string>
int main ()
{
// raw-string literal example with the literal made up of separate, concatenated literals
std::string s = R"(abc)"
R"( followed by not a newline: \n)"
" which is then followed by a non-raw literal that's concatenated \n with"
" an embedded non-raw newline";
std::cout << s << std::endl;
return 0;
}