如何在fstream中使用引号?

How do I use quotation marks in fstream?

本文关键字:fstream      更新时间:2023-10-16

我想将一行输出到.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'|

对于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)和pclose,你可能对它们感兴趣。您只需popen gnuplot进程并向它发送命令,最后pclose -ing它。

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

""one-D Hydro""

顺便说一句,既然你已经为它定义了命名空间,为什么你要使用std::呢?你可以直接使用endl.