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()
을 사용으로 하나 개의 텍스트 파일의 내용을 복사하기 위해 노력하고 있다는 점이다. 이것은 잘 작동하지만 ifs
에서 getline(ifs, str)
을 사용하면 스트림을 효과적으로 "파괴"하지 못하게됩니다.
무엇이 문제입니까? 이미 파일에서 모든 것을 읽었습니다. 왜 읽어야 할 부분이 남아 있으리라고 생각하십니까? –
호출을 통해 스트림을 사용했기 때문에 파일을 되 감을 필요가 있습니다. 호출 사이에'ifs.seekg (0);'을 삽입하십시오. –
답변 섹션은 다음과 같습니다. –