Перенос содержимого из C FILE в поток C ++

Предположим, у меня есть файл, открытый с синтаксисом C

FILE* fp = fopen("whatever.txt", "w");
// Library function needs FILE* to work on
libray_function(fp);

// Now I'd like to copy the contents of file to std::cout
// How???

fclose(fp);

Я хотел бы иметь возможность скопировать содержимое этого файла в o ++ Cstream (например, stringstream или, может быть, даже std::cout). Как я могу это сделать?

0

Решение

Закройте это сначала.

fclose(fp);

Затем откройте снова

string line;
ifstream myfile ("whatever.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
0

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

Вы могли бы использовать ifstream а также rdbuf():

#include <fstream>
#include <sstream>

std::ifstream in("whatever.txt");
std::ostringstream s;
s << in.rdbuf();

или же:

std::ifstream in("whatever.txt");
std::cout << in.rdbuf();
3

Вы открыли файл для записи. Вам все равно придется закрыть его и снова открыть, вы можете открыть его, как вам угодно (если хотите, в виде потока). Тогда все зависит от того, насколько вы заботитесь о производительности. Если вас это действительно волнует, вы должны читать его порциями (не менее 512 байт за раз). Если вам не важна производительность, вы можете прочитать один байт, выплюнуть один байт.

1
По вопросам рекламы [email protected]