Non*_*biz 11 c++ string-literals
反正有没有像PHP这样的东西
print << END
yadayadayada
END;
Run Code Online (Sandbox Code Playgroud)
在C++中?(多线,非转义,易于切割和粘贴的流插入)
sbi*_*sbi 28
C++ 11具有原始字符串文字:
// this doesn't have '\n', but '\\' and 'n'
R"(yada"yadayada\n)"
Run Code Online (Sandbox Code Playgroud)
如果你需要那些parens,你也可以使用你想要的任何结束标记来做到这一点:
// the following will be "(yada)(yada)(yada)"
R"END((yada)(yada)(yada))END"
Run Code Online (Sandbox Code Playgroud)
它也适用于嵌入式新行:
// the following will be "\n(yada)\n(yada)\n(yada)\n"
R"END(
(yada)
(yada)
(yada)
)END"
Run Code Online (Sandbox Code Playgroud)
Ric*_*dle 11
这个答案现在已经过时了现代C++ - 请参阅sbi对现代方式的回答.
这是你能做的最好的事情:
std::cout <<
"This is a\n"
"multiline\n"
"string.\n";
Run Code Online (Sandbox Code Playgroud)
不像正确的heredoc那么方便,但并不可怕.
在C++中,将大量数据放入源代码通常不会被视为代码风格,因此没有一种奇特的语言方式.
将文本放入外部文件(例如文本文件)通常更灵活,然后它不会绑定到已编译的可执行文件中.
如果您确实希望将文本绑定到可执行文件中(取决于您的平台),您通常可以使用某种形式的资源支持,或者使用带有"incbin"样式指令的汇编程序为数据区域命名,文本为你要.
或者,您可以使用外部实用程序(例如xxd -i)从给定的输入文件编译命名的C样式数组.然后可以使用其余的源代码编译生成的文件.
小智 5
是。 http://en.cppreference.com/w/cpp/language/string_literal
const char* s1 = R"foo(
Hello
World
)foo";
//same as
const char* s2 = "\nHello\nWorld\n";
Run Code Online (Sandbox Code Playgroud)
不管这是最佳实践,C ++ 11都能很好地满足您的要求。