поток для записи в файл, а также для записи в строковую переменную - PullRequest
0 голосов
/ 30 марта 2020

Я пробую сценарий, в котором функция помещает данные в файл.

func(std::ofstream fileStream, JsonData)
{
parses the Json and does some logic and puts to fil stream
}
std::ofstream fileStream(filename);
func(fileStream, jsonData);
//want a scenario where std::string aa will get values in ofstream.
fileStream.close();

Может ли кто-нибудь помочь мне, если я смогу преобразовать данные потока в std :: string? Я видел, что ostream можно преобразовать в stringstream; и это можно переместить в std :: string; но не удается открыть файл с ostream.

Пожалуйста, помогите мне ...

1 Ответ

1 голос
/ 30 марта 2020

Изменить

func(std::ofstream fileStream, JsonData)
{
parses the Json and does some logic and puts to fil stream
}

На

func(std::ostream& Stream, JsonData)
{
    //parses the Json and does some logic and puts to fill Stream
}

А теперь вы можете передать stringstream функции и заполнить ее. Затем вы можете извлечь из него строку и передать ее буфер в поток, например,

JsonData data;
std::stringstream ss;
// populate string stream
func(ss, data); 
// get string
std::string stringifiedData = ss.str();
// open file
std::ofstream fileStream(filename);
// write to file
fileStream << ss.rdbuf();
...