Computer >> Máy Tính >  >> Lập trình >> C ++

Tại sao iostream ::eof bên trong một điều kiện vòng lặp bị coi là sai?

Iostream ::eof trong vòng lặp được coi là sai vì chúng tôi chưa đạt EOF. Vì vậy, điều đó không có nghĩa là lần đọc tiếp theo sẽ thành công.

Khi chúng ta muốn đọc một tệp bằng cách sử dụng các luồng tệp trong C ++. Và khi chúng ta sử dụng một vòng lặp để ghi trong một tệp, nếu chúng ta kiểm tra phần cuối của tệp bằng stream.eof (), thì chúng ta đang thực sự kiểm tra xem tệp có phần cuối đã được tách rời hay không.

Mã mẫu

#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
     }
   }
}

Khi chúng tôi đang sử dụng luồng trực tiếp trong một vòng lặp, Chúng tôi sẽ không kiểm tra lại điều kiện.

Mã mẫu

#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!
   }
}