我需要打印一个字符串,其内容如下:
std::string("-I\"/path/to/dir\" ");
基本上,我需要这样做是因为我使用C代码来生成C代码。我想通过ofstream写上面的字符串,比如
ofstream fout; fout << the_string << endl;
问题是我不能在字符串中执行\\"。
\\"
eyh26e7m1#
只需转义斜杠 * 和引号 * 即可!例如\"--〉\\\"
\"
\\\"
fout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << std::endl;
在C0x/C11中
fout << R"(std::string("-I\"/path/to/dir\" ");)" << std::endl;
它使用***原始字符串文本***1
[1]毫无疑问,www.example.com和stackoverflow的语法标记ideone.com还没有准备好:)
42fyovps2#
这是可行的:
#include <iostream> using std::cout; using std::endl; int main() { cout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << endl; return 0; }
印刷
重点是:你需要同时转义斜杠和引号。
6qqygrtg3#
我希望我没理解错你的问题:换码\和换码":\\\"
\
"
to94eoyn4#
你可能想尝试加入额外的“/”字符,因为单个的“/”不会被解析为字符串。我认为它应该可以工作(我是Java/C#的家伙,我自己也遇到过这个问题几次)。
mrzz3bfm5#
这可以作为标题问题的答案,即使这不是你的问题:
#include <iostream> using namespace std; int main(){ std::string foo = string(" /!\\ WARNING /!\\ -> 1"); cout << foo << endl; cout << " /!\\ WARNING /!\\ -> 2" << endl; return 0; }
其输出为:/!\警告/!\ -〉1/!\警告/!\ -〉2
5条答案
按热度按时间eyh26e7m1#
只需转义斜杠 * 和引号 * 即可!例如
\"
--〉\\\"
在C0x/C11中
它使用***原始字符串文本***1
* 请参见在http://ideone.com/TgtZK上测试的两个版本 *
[1]毫无疑问,www.example.com和stackoverflow的语法标记ideone.com还没有准备好:)
42fyovps2#
这是可行的:
印刷
重点是:你需要同时转义斜杠和引号。
6qqygrtg3#
我希望我没理解错你的问题:
换码
\
和换码"
:\\\"
to94eoyn4#
你可能想尝试加入额外的“/”字符,因为单个的“/”不会被解析为字符串。我认为它应该可以工作(我是Java/C#的家伙,我自己也遇到过这个问题几次)。
mrzz3bfm5#
这可以作为标题问题的答案,即使这不是你的问题:
其输出为:
/!\警告/!\ -〉1
/!\警告/!\ -〉2