Rumah > pembangunan bahagian belakang > C++ > Mengapakah Fungsi `eof()` `ifstream` Berperilaku Berbeza dengan `get()` dan Operator Pengekstrakan (`>>`)?

Mengapakah Fungsi `eof()` `ifstream` Berperilaku Berbeza dengan `get()` dan Operator Pengekstrakan (`>>`)?

Linda Hamilton
Lepaskan: 2024-11-26 04:07:08
asal
1012 orang telah melayarinya

Why Does `ifstream`'s `eof()` Function Behave Differently with `get()` and the Extraction Operator (`>>`)?
>`)? " />

Cara Pengesanan Akhir Fail Berbeza dalam Operasi ifstream

Apabila bekerja dengan fail menggunakan ifstream, adalah penting untuk memahami cara fungsi eof() menentukan hujung fail. Fungsi ini memainkan peranan penting dalam mengendalikan kandungan fail dengan berkesan.

Dalam kod yang disediakan coretan, gelung while(!inf.eof()) cuba membaca aksara daripada fail "ex.txt" Walau bagaimanapun, selepas mencapai penghujung fail, fungsi get() menambah aksara tambahan dan memaparkan "-1 ."

Untuk menangani perkara ini, adalah penting untuk mengetahui bahawa get() mengembalikan nilai char dan nilai pulangannya sepadan dengan aksara seterusnya dalam fail. Apabila penghujung fail dicapai, get() mengembalikan std::char_traits::eof(), yang biasanya diwakili sebagai "-1." Oleh itu, jika gelung berterusan selepas mencapai penghujung fail, get() mengembalikan "-1" setiap kali.

Sebaliknya, pernyataan inf >> c dalam gelung kedua menggunakan operator pengekstrakan untuk membaca aksara daripada fail ini cuba membaca ke dalam pembolehubah c dan kembali rujukan kepada inf. Jika operasi baca gagal, inf dinilai kepada palsu.

Oleh itu, gelung menggunakan inf >> c berjaya ditamatkan apabila fail tamat kerana operasi baca gagal. Dalam kes ini, inf menjadi palsu dan keluar dari gelung.

Ringkasnya, memahami cara berbeza eof() mempengaruhi get() dan >> pengendali adalah penting untuk bekerja dengan fail dengan cekap dalam ifstream. Fungsi get() mengembalikan "eof" untuk menunjukkan penghujung fail, manakala >> menggunakan pendekatan yang lebih intuitif apabila pembacaan yang gagal mengakibatkan penilaian inf kepada palsu dan keluar dari gelung.

Atas ialah kandungan terperinci Mengapakah Fungsi `eof()` `ifstream` Berperilaku Berbeza dengan `get()` dan Operator Pengekstrakan (`>>`)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan