假设我有一个用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
)。我怎么能这样做?
答案 0 :(得分:3)
#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();
}