#c #file #stl #stdstring #ofstream
Вопрос:
У меня есть std::ofstream
объект, который еще не был сброшен. Есть ли способ получить содержимое этого ofstream
файла и сохранить его в std::string
?
По сути, я хочу, чтобы:
std::ofstream ofs("somefile.txt");
ofs << "stuff";
someMethod(ofs); //This method streams into ofs as well
ofs <<"blah";
yetAnotherMethod(ofs); //ofs gets violated inside this method as well
//more data streamed into ofs
std::string s; //Whatever was streamed into ofs should go into s as well for an additional output.
Комментарии:
1. Нет. Как насчет использования a
std::ostringstream
для начала?2. В этом нет никакого смысла. Однако вы можете довольно легко получить «содержимое» потока входного файла (просто прочитав файл). Какую реальную проблему вы пытаетесь решить с помощью этого? Если это просто любопытство, то все в порядке, но, пожалуйста, скажите так. В противном случае, пожалуйста, вместо этого спросите о вашей реальной проблеме напрямую.
3. @UlrichEckhardt К сожалению, существует фрагмент кода с реализацией, использующей ofstream, и я пытаюсь найти способ работать с ним. Полагаю, я просто перепишу его. 🙁
4. @Someprogrammerdude Я немного изменил код в надежде, что «реальная проблема» ясна. Я пытаюсь понять, смогу ли я избежать необходимости переписывать этот код, но, похоже, мне не повезло.
5. Изменить
someMethod()
иyetAnotherMethod()
принятьostreamamp;
вместоofstreamamp;
параметра. Вот так просто и гораздо более универсально.
Ответ №1:
Нет, «содержание этого std::ofstream
» бессмысленно. Файл содержит содержимое, поток-это дескриптор, который представляет запись в файл.
Либо сбросьте ofs
и прочитайте файл, либо используйте std::ostream amp;
вместо std::ofstream amp;
.