Как использовать кавычки в fstream?
Я хочу вывести строку в .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 ответа
В 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;
Кстати, вас могут заинтересовать popen(3) и pclose
, если ваша операционная система и библиотека C++ предоставляют их. Вы бы просто popen
gnuplot
обрабатывать и отправлять ему команды, наконец pclose
это
Попробуйте включить escape-символ [т.е. косую черту] в код, в который вы пытаетесь добавить двойные кавычки. Например:
"\"one-D Hydro\""
кстати почему вы используете std::
как только вы определили пространство имен для него, вы можете напрямую использовать endl.