C++ C++;多行字符串原始文本

C++ C++;多行字符串原始文本,c++,C++,我们可以定义一个具有多行的字符串,如下所示: const char* text1 = "part 1" "part 2" "part 3" "part 4"; const char* text2 = "part 1\ part 2\ part 3\ p

我们可以定义一个具有多行的字符串,如下所示:

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";

你想写什么就写什么:

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)"

请注意,原始字符串文字由“
R”(
)”
分隔(如果需要额外的“唯一性”,也可以通过在引号和括号之间添加字符来添加分隔符)

#包括
#包括
#包括
int main()
{
//原始字符串文字示例,文字由单独的、连接的文字组成
标准::字符串s=R“(abc)”
R“(后跟非换行:\n)”
“然后后跟一个非原始文本,该文本与\n连接”
“嵌入的非原始换行符”;

什么是“没人工作”意思是?您收到错误消息了吗?请注意,您正在连接字符串,而没有插入换行符。您想做什么?并且您的原始字符串出现语法错误。这些不是多行字符串,而是写在多行上的字符串。我的字符串太长,我想在多行中定义它们,以便在代码谢谢你的回答。应该是R吗?“,我不在电脑上,不能尝试。@Giswin,不,括号在引号内。也许像ideone或Coliru这样的东西仍然可以在你的手机上使用(或者你正在使用的任何东西)@Giswin:代码示例是一个小而完整的程序,它是从使用VS 2013和GCC 4.8.0编译和运行的文件中复制/粘贴而来的。因此,希望其中不会出现拼写错误。我想将长字符串拆分为单独的代码行而不包含“\n”会很有用s、 复杂的正则表达式就是这种情况。但是您的答案在字符串中引入了换行符,这可能不是预期的结果。@NikolaiK.,Fair,已经有几年了,但我可能希望嵌入的换行符是需要的。第二部分可以非常直接地进行调整,以便从结果中删除换行符。
#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;
}