>`)? " />
Menyelam ke dalam Fungsi eof() ifstream
Memahami gelagat fungsi eof() ifstream mungkin membingungkan, seperti yang digambarkan dalam coretan kod yang disediakan:
int main() {
std::fstream inf( "ex.txt", std::ios::in ); while( !inf.eof() ) { std::cout << inf.get() << "\n"; } inf.close(); inf.clear(); inf.open( "ex.txt", std::ios::in ); char c; while( inf >> c ) { std::cout << c << "\n"; } return 0;
}
Mari kita mendalami penjelasannya disediakan:
When EOF Really Sets In
Fungsi eof() mengesan apabila operasi baca cuba mengakses data di luar hujung fail.
Sebab kelakuan ini adalah untuk memastikan keserasian dengan peranti yang berbeza, seperti paip dan soket, di mana konsep saiz fail mungkin tidak semudah dengan teks fail.
Menyingkap Keajaiban get() dan >>
Dua gelung dalam coretan kod menggunakan pendekatan berbeza untuk membaca kandungan fail:
Ini menjelaskan mengapa gelung pertama membaca aksara tambahan dan memaparkan -1, manakala gelung kedua memberikan output yang betul - ia menamatkan gelung sebelum cuba membaca di luar penghujung fail.
Mengelakkan Bahaya -1
Untuk mengelakkan bergantung pada nombor ajaib -1 untuk mengenal pasti penghujung fail, disyorkan untuk menggunakan std: :char_traits
Atas ialah kandungan terperinci Mengapakah `ifstream::eof()` Berkelakuan Berbeza dengan `get()` dan Operator Pengekstrakan (`>>`)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!