将内容从C FILE传输到C ++流

时间:2012-09-25 13:05:59

标签: c++ file-io ostream

假设我有一个用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中复制该文件的内容(如stringstream或甚至std::cout)。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

您可以使用ifstreamrdbuf()

#include <fstream>
#include <sstream>

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

或:

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

答案 1 :(得分:1)

您已打开文件进行写入。无论如何你都需要关闭它并重新打开它,你也可以随意打开它(如果你愿意的话,就像一个istream)。那么这取决于你对表现的关注程度。如果你真的在乎,你应该以块的形式读取它(一次至少512个字节)。如果你不关心性能,你可以读取一个字节,吐出一个字节。

答案 2 :(得分:0)

先关闭它。

fclose(fp);

然后再打开

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