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 に答える