我需要打印一个确切地说的字符串:
std::string("-I\"/path/to/dir\" ");
基本上,我需要这样做,因为我使用 C++ 代码来生成 C++ 代码。
我想通过 ofstream 写上面的字符串,所以像
ofstream fout;
fout << the_string << endl;
问题是我不能\\"
在字符串内做。
我需要打印一个确切地说的字符串:
std::string("-I\"/path/to/dir\" ");
基本上,我需要这样做,因为我使用 C++ 代码来生成 C++ 代码。
我想通过 ofstream 写上面的字符串,所以像
ofstream fout;
fout << the_string << endl;
问题是我不能\\"
在字符串内做。
只需避开斜线和引号!即\"
-->\\\"
fout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << std::endl;
在 C++0x/C++11 中
fout << R"(std::string("-I\"/path/to/dir\" ");)" << std::endl;
它使用原始字符串文字1
1毫无疑问,ideone.com 和 stackoverflow 的语法荧光笔还没有准备好 :)
这有效:
#include <iostream>
using std::cout;
using std::endl;
int main() {
cout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << endl;
return 0;
}
印刷
std::string("-I\"/path/to/dir\" ");
关键是:您需要同时转义斜杠和引号。
我希望我正确理解了你的问题:
逃脱\
和逃脱"
:
\\\"
您可能想尝试添加额外的“/”字符,因为单个“/”不会被解析为字符串。我认为它应该可以工作(我是 Java/C# 人,我自己也遇到过这个问题几次)。