假设我需要从C ++代码输出一些程序代码。所以我需要打印像:
cout << "foo(\"hello\", \"world\", 5)" << endl;
有没有办法让我不需要逃避每个“?
答案 0 :(得分:13)
使用C ++ 11,你可以做到
R"delimeter(foo("hello", "world",5))delimeter"
R"delimeter(
定义原始字符串的开头,delimeter
是最多16个字符的标签,)delimeter"
结束原始字符串。
答案 1 :(得分:5)
如果您正在使用C ++ 03,则可以使用宏来执行您想要的操作:
#define PRINT_STRING(s) cout << (#s) << endl;
int main() {
cout << "foo(\"hello\", \"world\", 5)" << endl;
PRINT_STRING(foo("hello", "world", 5))
return 0;
}
返回
output:
foo("hello", "world", 5)
foo("hello", "world", 5)
您可以在此处查看:http://ideone.com/G6TvU3
答案 2 :(得分:3)
如果您的编译器支持C ++ 11,则多行引用构造为R"LABEL(
其中LABEL是有效标签。要结束报价,请使用)LABEL"