Rumah >pembangunan bahagian belakang >C++ >Adakah Menggunakan `eof()` dalam Input Loops merupakan Amalan Buruk?
Adakah eof() satu Amalan Buruk? Membongkar Sebab
Fungsi eof() sering digunakan dalam program yang melibatkan prosedur input fail. Walaupun sesetengah mungkin tidak menganggapnya sebagai amalan yang membimbangkan, ia telah diketengahkan sebagai tidak wajar oleh sumber tertentu. Menyelami selok-belok isu ini, kami membongkar sebab di sebalik pandangan ini.
Mengikut takrifan eof(), ia membantu dalam menentukan sama ada percubaan untuk membaca melebihi had fail telah berlaku. Walau bagaimanapun, fungsinya terhad kepada senario khusus ini, berbeza dengan senario lain yang lebih lazim.
Penggunaan Salah:
Sebagai contoh, serpihan kod berikut menunjukkan penggunaan yang salah daripada eof():
while (!cin.eof()) { cin >> foo; }
Dalam ini coretan, eof() digunakan dalam keadaan gelung, bertujuan untuk menyemak ketersediaan input selanjutnya. Walau bagaimanapun, pendekatan ini adalah salah.
Penggunaan yang Sesuai:
Untuk membetulkan isu ini, kod tersebut hendaklah menggunakan struktur berikut:
if (!(cin >> foo)) { if (cin.eof()) { cout << "read failed due to EOF\n"; } else { cout << "read failed due to something other than EOF\n"; } }
Dalam keadaan ini, kod mula-mula cuba membaca data ke dalam pembolehubah foo dan kemudian memeriksa sama ada operasi itu berjaya. Dengan berbuat demikian, ia membezakan antara EOF dan punca lain yang berpotensi untuk pembacaan yang tidak berjaya, memberikan pengendalian ralat yang lebih komprehensif.
Atas ialah kandungan terperinci Adakah Menggunakan `eof()` dalam Input Loops merupakan Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!