假设我需要从我的 C++ 代码中输出一些程序代码。所以我需要打印如下内容:
cout << "foo(\"hello\", \"world\", 5)" << endl;
有没有办法让我不需要逃避每个“?
假设我需要从我的 C++ 代码中输出一些程序代码。所以我需要打印如下内容:
cout << "foo(\"hello\", \"world\", 5)" << endl;
有没有办法让我不需要逃避每个“?
使用 C++11,您可以做到
R"delimeter(foo("hello", "world",5))delimeter"
whereR"delimeter(
定义原始字符串的开头, delimeter
最多 16 个字符的标签,并)delimeter"
结束原始字符串。
如果你使用 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
如果您的编译器支持 C++11,则多行引号构造为R"LABEL(
Where LABEL is a valid label。结束报价使用)LABEL"