Как использовать кавычки в 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'|

0

Решение

В 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это

3

Другие решения

Попробуйте включить escape-символ [т.е. косую черту] в код, где вы пытаетесь добавить двойные кавычки.
Например:

"\"one-D Hydro\""

кстати почему вы используете std:: как только вы определили пространство имен для него, вы можете напрямую использовать endl.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector