Menangkap Input dari stdin Sehingga EOF tanpa Gelung
Membaca input daripada input standard sehingga akhir fail (EOF) adalah perkara biasa tugas dalam pengaturcaraan C. Biasanya, gelung digunakan untuk mencapai ini, tetapi dalam situasi tertentu, pendekatan bukan gelung mungkin diingini.
Penyelesaian Tanpa Gelung
Malangnya, tiada satu pun , fungsi bukan gelung dalam C yang boleh membaca input dari stdin sehingga EOF. Walau bagaimanapun, menggabungkan pengendali input dan manipulasi rentetan C menawarkan penyelesaian:
char input[1000]; cin.getline(input, 1000); while (cin.eof() == false) { cout << input << endl; cin.getline(input, 1000); }
Pendekatan ini menggunakan cin.getline() untuk membaca maksimum 1000 aksara daripada stdin ke dalam tatasusunan input. Ia kemudian menyemak sama ada EOF telah dicapai menggunakan cin.eof(). Jika tidak, ia mencetak input ke konsol dan mengulangi proses sehingga EOF ditemui.
Pendekatan Berasaskan Gelung Terbaik
Jika penyelesaian bukan gelung tidak boleh dilaksanakan atau diingini, pendekatan berasaskan gelung terbaik ialah menggunakan fungsi std::getline():
string line; while (getline(cin, line)) { // Process the line }
Pendekatan ini memasuki gelung yang membaca baris input menggunakan getline() sehingga akhir fail dicapai. getline() mengembalikan false apabila input gagal atau EOF ditemui, menyebabkan gelung ditamatkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca stdin Sehingga EOF dalam C Tanpa Gelung Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!