Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Fungsi `ifstream::eof()` C Berfungsi dan Mengapa Menggunakan Operator `>>` Selalunya Diutamakan?
>` Operator Selalunya Diutamakan? " />
Memahami Fungsi eof() ifstream
Dalam C , kelas fstream menyediakan kaedah untuk mengendalikan input dan output fail. Fungsi eof() ialah salah satunya kaedah, yang mengembalikan nilai boolean yang menunjukkan sama ada akhir fail (EOF) telah dicapai.
Gelagat eof()
Fungsi eof() beroperasi pada strim fail Ia menetapkan bendera yang dipanggil bendera EOF apabila strim fail cuba membaca melebihi bait terakhir fail. Bendera kekal tidak ditetapkan sehingga operasi baca seterusnya.
Menggunakan eof() dalam a Loop
Coretan kod yang anda berikan cuba membaca aksara daripada fail sehingga EOF dicapai:
while( !inf.eof() ) { std::cout << inf.get() << "\n"; }
Dalam kes ini, fail teks "abc" mengandungi empat aksara (termasuk aksara baris baharu Selepas membaca tiga aksara pertama, bendera eof() tidak ditetapkan kerana strim fail belum lagi cuba membaca melepasi penghujung Walau bagaimanapun, apabila ia cuba membaca aksara baris baharu, bendera EOF ditetapkan, menunjukkan bahawa penghujung fail telah dicapai.
Bacaan Aksara Tambahan
Anda menyebut bahawa kod itu juga membaca aksara tambahan dan memaparkan "-1" apabila menggunakan eof(). Ini berlaku kerana get() mengembalikan nilai untuk menunjukkan penghujung fail. Dalam kes ini, ia mengembalikan -1 untuk menandakan bahawa tiada lagi aksara untuk dibaca.
Pendekatan Alternatif menggunakan >> Operator Bahagian kedua kod anda menggunakan >> operator untuk membaca aksara daripada fail: Dalam kes ini, >> operator melakukan dua tindakan: Gelung akan berterusan selagi >> operasi berjaya, yang dilakukan sehingga akhir fail dicapai. Apabila penghujung fail dicapai, bahagian >> operator mengembalikan palsu, dan gelung ditamatkan. Kesimpulan Tingkah laku eof() boleh mengelirukan, terutamanya dalam konteks fail. Adalah penting untuk memahami bahawa ia hanya menetapkan bendera EOF apabila aliran fail cuba membaca melepasi hujung fail. Daripada menggunakan eof(), selalunya lebih disukai untuk menggunakan >> operator untuk membaca aksara daripada fail, kerana ia mengendalikan keadaan EOF secara automatik. Atas ialah kandungan terperinci Bagaimanakah Fungsi `ifstream::eof()` C Berfungsi dan Mengapa Menggunakan Operator `>>` Selalunya Diutamakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!char c;
while( inf >> c ) {
std::cout << c << "\n";
}