Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

루프 조건 내에서 iostream::of 사용이 잘못된 것으로 간주되는 이유는 무엇입니까?


EOF에 도달하지 않았다고 해서 다음 읽기가 성공하는 것은 아닙니다.

C++에서 파일 스트림을 사용하여 읽는 파일이 있다고 가정합니다. 파일을 읽기 위해 루프를 작성할 때 stream.eof()를 확인하는 경우 기본적으로 파일이 이미 eof에 도달했는지 확인하는 것입니다.

따라서 다음과 같은 코드를 작성합니다.

예시

#include<iostream>
#include<fstream>
using namespace std;

int main() {
   ifstream myFile("myfile.txt");
   string x;
   
   while(!myFile.eof()) {
      myFile >> x;
      // Need to check again if x is valid or eof
      if(x) {
         // Do something with x
      }
   }
}

예시

루프에서 스트림을 직접 사용할 때 조건을 두 번 확인하지 않을 것입니다 -

#include<iostream>
#include<fstream>
using namespace std;

int main() {
   ifstream myFile("myfile.txt");
   string x;
   while(myFile >> x) {
      // Do something with x
      // No checks needed!
   }
}