Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Fungsi `ifstream::eof()` C Berfungsi dan Mengapa Menggunakan Operator `>>` Selalunya Diutamakan?

Bagaimanakah Fungsi `ifstream::eof()` C Berfungsi dan Mengapa Menggunakan Operator `>>` Selalunya Diutamakan?

Patricia Arquette
Patricia Arquetteasal
2024-11-29 02:31:08132semak imbas

How Does C  's `ifstream::eof()` Function Work, and Why Is Using the `>>` Operator Selalu 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:

char c;
while( inf >> c ) {
    std::cout << c << "\n";
}

Dalam kes ini, >> operator melakukan dua tindakan:

  1. Ia cuba membaca aksara daripada fail ke dalam pembolehubah c.
  2. Ia mengembalikan nilai boolean yang menunjukkan jika operasi baca berjaya.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn