如何在fstream中使用引号?

时间:2013-05-21 18:14:55

标签: c++ file-io fstream double-quotes

我想在.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'|

2 个答案:

答案 0 :(得分:3)

使用C ++ 03(甚至C)使用反斜杠来转义字符串文字中的双引号:

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

请注意,gnuplot可能还要求您转义某些字符,例如如果你想让标题包含引号!

使用C++11,您可以使用raw string literals,例如

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

BTW,如果您的操作系统和C ++库提供它们,您可能会对popen(3)pclose感兴趣。您只需popen gnuplot进程并向其发送命令,最后pclose即可。

答案 1 :(得分:2)

尝试在您尝试添加双引号的代码中包含转义字符[即反斜杠]。 例如:

"\"one-D Hydro\""

顺便说一下,为什么在为它定义名称空间后使用std::,可以直接使用endl。