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