2012-05-04 4 views
2

내가 파일을 구문 분석하는 몇 가지 문제가 있어요표준 : : fstream 오류

내가 구문 분석 할 파일의 마지막 두 행은 다음과 같습니다

F 814/866/896/1100 1035/

: 989 817/965/898

[아무것도, \ n을에서 효과]

이 내가 파일을 읽는 방법입니다

그러나 아무 것도 포함하지 않은 파일의 마지막 줄에는 몇 가지 문제가 있습니다. 파일의 마지막 줄 앞에 inFile.ignore(1000, '\n');이 발생하고 std::fstream::eof()이 검색 될 것으로 예상되지만 어떤 이유인지는 알 수 없습니다. 그리고 분명히 sCommand은 줄에 아무 것도없는 경우에도 이전 줄과 동일한 명령이되어 문제를 일으킬 수 있습니다.

확인할 방법이 있습니까? 그리고 그렇다면, 어떻게?

+1

가능한 복제본 : http://stackoverflow.com/questions/21647/reading-from-text-file-until-eof-repeats-last-line 요컨대, eof()가 true 일 때 true를 반환하는 것은 아닙니다. 스트림에서 읽을 내용이 없습니다. 실제로 마지막을 읽으 려 할 때만 true를 반환합니다. 즉 * 먼저 * 읽어야하고 성공했는지 확인한 다음 읽은 값을 가지고 작업을 수행해야합니다. 은'while' 상태에서 읽기 작업을 넣어 :'동안 (INFILE >> sCommand) {...' – jrok

+0

읽기이를 http://www.parashift.com/c++-faq-lite/input-output.html# faq-15.4 및 http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5 – jrok

답변

1

답변이 아니라 댓글 (의견을 제시하는 방법을 모르겠다)입니다. 숫자가 eof 인 마지막 행 뒤에 2가 \n 인 경우 트리거되지 않습니다. 나는 .eof()을 사용하여 비슷한 문제를 겪었으며 독서 상태를 유지하기 위해 읽은 내용을 확인하는 것이 좋습니다.

+0

* 댓글을 추가하려면 : * 현재 페이지에서 "덧글 추가"를 검색하면됩니다. 첫 번째 히트작이됩니다. –

+1

평판이 낮은 @KingsIndian 사용자는 논평 할 수 없습니다. – ulidtko

+0

오, 그래! 당신은 50 명의 rep가 논평 할 필요가있다. –