C 多行字符串文字

新手上路,请多包涵

有没有办法在 C++ 中使用多行纯文本、常量文字,就像 Perl 一样?也许使用 #include 文件的一些解析技巧?我想不出一个,但是男孩,那会很好。我知道它会在 C++0x 中。

原文由 rlbond 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

嗯……有点。最简单的方法是使用编译器连接相邻字符串文字的事实:

 const char *text =
  "This text is pretty long, but will be "
  "concatenated into just a single string. "
  "The disadvantage is that you have to quote "
  "each part, and newlines must be literal as "
  "usual.";

缩进无关紧要,因为它不在引号内。

你也可以这样做,只要你小心避开嵌入的换行符。不这样做,就像我的第一个答案一样,将无法编译:

常量字符 *text2 =
  “在这里,另一方面,我已经疯了\
真的让文字跨越几行,\
无需费心引用每一行的 \
内容。这行得通,但你不能缩进。";

同样,请注意每行末尾的反斜杠,它们必须在行结束之前,它们正在转义源中的换行符,因此一切都好像换行符不存在一样。在有反斜杠的位置,字符串中不会出现换行符。使用这种形式,你显然不能缩进文本,因为缩进会成为字符串的一部分,用随机空格弄乱它。

原文由 unwind 发布,翻译遵循 CC BY-SA 3.0 许可协议

你也可以这样做:

 const char *longString = R""""(
This is
a very
long
string
)"""";

原文由 Raydelto Hernandez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏