私はifstream
の.rdbuf()
を使っていると何とか変わっているようです。次のコードは、問題を示す必要があります。ifstreamsとrdbuf()の奇妙な動作
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
ifstream ifs("Sample.csv");
cout << "Reading buffer: " << endl;
cout << ifs.rdbuf(); // Outputs buffer as expected
cout << "Reading buffer again: " << endl;
cout << ifs.rdbuf(); // Returns nothing
return 0;
}
これが私を悩ませている理由は、私は現在ofstream ofs; ofs << ifs.rdbuf()
を使用して別のものに1つのテキストファイルの内容をコピーしようとしているということです。これは正常に動作しますが、getline(ifs, str)
を使用してifs
から読み取りを行うと、ストリームが効果的に「破損」します。
問題は何ですか?あなたはすでにファイルからすべてを読んだことがありますが、何か読んでいると思われるのはなぜですか? –
あなたはあなたの呼び出しでストリームを消費したので、ファイルを巻き戻す必要があります:呼び出しの間に 'ifs.seekg(0);'を挿入してください。 –
回答セクションは下にあります。 –