Programming,  컴퓨터와 인터넷

[C++] input file stream으로 여러 파일을 읽을 때 제대로 read되지 않는 문제

다음과 같은 코드에서, 첫번째 파일은 getline을 통해 제대로 read가 되지만, 여러 파일에 대해 반복적으로 open…read…close하다보면 제대로 read되지 않는 현상이 나타난다.

ifstream data_fstrm;
while (...) {
data_fstrm.open(data_file_path.c_str());
if (data_fstrm.is_open() == false) {
// error handling
}
data_fstrm.getline(...);
data_fstrm.close();
}

이 문제점은 close() 이후에 clear()를 호출해주면 해결된다.

data_fstrm.clear();

이러한 오류의 원인은 하나의 파일 스트림 핸들을 여러 파일에 대해서 공유해서 사용할 때, 에러 정보를 초기화해주지 않았기 때문에 연속적인 read 연산에서 문제가 발생하는 것이다.