在源代码中嵌入较长文本的提示,如Perl等语言?

时间:2009-12-20 18:28:33

标签: c++ c string

  

可能重复:
  Something like print END << END; in C++?

在shell脚本或perl程序中,所谓的“HERE”文档通常用于较长的文本,例如的Perl:

my $t=<<'...';

usage:

   program [options] arg1 arg2

      options:

            -opt1  description for opt1
            -opt2  description for opt2
...

print $t;

这种风格非常易读,例如无需转义引号或明确插入\n

我想知道是否有一种类似的优雅方法可以在C / C ++程序中嵌入更长的文本?

#include <iostream>;
int main(void) {
  std::string t;
  // t = ... the same long text as in the perl example in a HERE document fashion ...
  std::cout << t;
  return 0;    
}

编辑:简化:不需要变量插值。

2 个答案:

答案 0 :(得分:3)

不幸的是,没有优雅的解决方案。我继续使用:

std::string lorem =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
"sed do eiusmod tempor incididunt ut labore et dolore magna "
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
"...";

C / C ++将字符串粘在一起,遗憾的是,除了使用\n之外,无法隐式输入换行符。

此外,这是this SO question的副本。

答案 1 :(得分:3)

我一直使用

"....\n"
".....\n"
"....\n"

实际上是一个char * literal,并且在MSVC优化标签时没有失真的优点。