Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เหตุใด iostream::eof ภายในเงื่อนไขลูปจึงถือว่าผิด


iostream::eof ในลูปถือว่าผิดเพราะเรายังไม่ถึง EOF ไม่ได้หมายความว่าการอ่านครั้งต่อไปจะสำเร็จ

เมื่อเราต้องการอ่านไฟล์โดยใช้ไฟล์สตรีมในภาษา C++ และเมื่อเราใช้ลูปเพื่อเขียนไฟล์ หากเราตรวจสอบจุดสิ้นสุดของไฟล์โดยใช้ stream.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!
   }
}