如何在C ++中输出逐字字符串

时间:2012-10-21 05:59:52

标签: c++

假设我需要从C ++代码输出一些程序代码。所以我需要打印像:

cout << "foo(\"hello\", \"world\", 5)" << endl;

有没有办法让我不需要逃避每个“?

3 个答案:

答案 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"