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);

stringstreamそのファイルの内容をC++ostream(aまたは多分)にコピーできるようにしたいと思います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バイト)。パフォーマンスを気にしない場合は、1バイトを読み取って、1バイトを吐き出すことができます。

于 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 に答える