0

假设我有一个用 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);

我希望能够在 C++ ostream 中复制该文件的内容(例如 astringstream或什至std::cout)。我怎样才能做到这一点?

4

3 回答 3

3

您可以使用ifstreamand 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();
于 2012-09-25T13:17:30.450 回答
1

您已打开文件进行写入。无论如何,您都需要关闭它并重新打开它,您也可以随意打开它(如果您愿意,可以作为 istream)。然后,这仅取决于您对性能的关心程度。如果您真的关心,您应该分块阅读它(一次至少 512 个字节)。如果您不关心性能,您可以读取一个字节,吐出一个字节。

于 2012-09-25T13:08:59.853 回答
0

先关闭它。

fclose(fp);

然后再次打开

string line;
ifstream myfile ("whatever.txt");
if (myfile.is_open())
{
    while ( myfile.good() )
    {
        getline (myfile,line);
        cout << line << endl;
    }
    myfile.close();
}
于 2012-09-25T13:14:13.830 回答