小编典典

C++ 多行字符串文字

all

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


阅读 106

收藏
2022-03-13

共1个答案

小编典典

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

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 =
  “在这里,另一方面,我已经疯了\
真的让文字跨越几行,\
无需费心引用每一行的 \
内容。这行得通,但你不能缩进。";

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

2022-03-13