4

我需要打印一个确切地说的字符串:

std::string("-I\"/path/to/dir\" ");

基本上,我需要这样做,因为我使用 C++ 代码来生成 C++ 代码。

我想通过 ofstream 写上面的字符串,所以像

 ofstream fout;
 fout << the_string << endl;

问题是我不能\\"在字符串内做。

4

4 回答 4

7

只需避开斜线引号!即\"-->\\\"

fout << "std::string(\"-I\\\"/path/to/dir\\\" \");" << std::endl;

在 C++0x/C++11 中

fout << R"(std::string("-I\"/path/to/dir\" ");)" << std::endl;

它使用原始字符串文字1

在http://ideone.com/TgtZK上查看两个测试版本  

1毫无疑问,ideone.com 和 stackoverflow 的语法荧光笔还没有准备好 :)

于 2011-11-06T19:33:58.080 回答
1

这有效:

#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\" ");

关键是:您需要同时转义斜杠和引号。

于 2011-11-06T19:35:10.170 回答
0

我希望我正确理解了你的问题:

逃脱\和逃脱"

\\\"

于 2011-11-06T19:35:07.470 回答
0

您可能想尝试添加额外的“/”字符,因为单个“/”不会被解析为字符串。我认为它应该可以工作(我是 Java/C# 人,我自己也遇到过这个问题几次)。

于 2011-11-06T19:35:16.880 回答