0

二重引用符で囲まれた行を.pltファイルに出力したいのですが、これまでのところこの問題があります。"one-D Hydro"

#include <cstdlib>
#include <fstream>

using namespace std;

int main()
{
        fstream gnuplot_file;        

        gnuplot_file.open ("sod.plt");
        gnuplot_file<<"set title"<< ""one-D Hydro""<<std::endl;
        gnuplot_file.close();
        system("gnuplot.exe sod.plt");


        return 0;
}

行 11 では、ステートメントを閉じることができないように見えるため、コンパイルできません。ちなみに、エラーは同じように役に立ちません。

gnuplot_call.cpp|11|error: expected ';' before 'one'|

4

2 に答える 2

3

C++03 (または C) では、バックスラッシュを使用して文字列リテラルの二重引用符をエスケープします。

    gnuplot_file << "set title" << "\"one-D Hydro\"" << std::endl;

gnuplot一部の文字もエスケープする必要があることに注意してください。たとえば、タイトルに引用符を含めたい場合などです。

C++11 では、生の文字列リテラルを使用できます。

   gnuplot_file<< R"*(set title "one-D Hydro")*" << std::endl;

ところで、お使いのオペレーティング システムと C++ ライブラリがそれらを提供している場合は、popen(3)とに興味があるかもしれません。プロセスを実行してコマンドを送信し、最後に-ing しますpclosepopengnuplotpclose

于 2013-05-21T18:16:26.970 に答える
2

二重引用符を追加しようとしているコードにエスケープ文字 [バック スラッシュ] を含めてみてください。例えば:

"\"one-D Hydro\""

ところで、std::名前空間を定義したら、endl を直接使用できるのはなぜですか。

于 2013-05-21T18:22:51.610 に答える