2010-02-27 3 views
0

관련된 질문 중 하나에 사용 된 양식을 사용하고있었습니다. 문제는 내가 파일의 마지막에 계속 가고 있다는 것이다.C++ EOF Getline Error

파일은 fstream이며 str은 문자열입니다.

처리되지 않은 예외 마이크로 소프트 C++ 예외 : 표준 : : ios_base :: 실패

 
while (getline(file, str)) 
{

}

if (cin.bad()) { // IO error } else if (!cin.eof()) { // format error (not possible with getline but possible with operator>>) } else { // format error (not possible with getline but possible with operator>>) // or end of file (can't make the difference) }

답변

2

당신이 가장 가능성이 당신에 의해 발생 (또는 코드가 사용되는) 발생 std::ios_base::failure 예외를 받고있는 경우 당신의 파일을 위해 그들을 켜십시오. 기본적으로 해제되어야합니다. 테스트하기 만하면 while 회 돌이가 발생하기 바로 전에 시도해 볼 수 있습니다. 그러나 아마도 회 돌이를 조사 할 필요가있을 것입니다.

file.exceptions(std::ios_base::goodbit); 
+0

덕분에, 파일을 여는 예외 예제 코드의 일부는, raw_data.exceptions을 한 것으로 통보하지 않았다 (ifstream :: failbit | ifstream :: badbit); – Roo