正確に言う文字列を印刷する必要があります:
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#の人で、この問題に何度か遭遇しました)。