Merungkai Enigma cin.ignore() dalam C
Apabila berinteraksi dengan pengguna dalam program C, senario yang tidak dijangka seperti melangkau input rentetan boleh timbul. Panggilan cin.ignore() yang kelihatan tidak berbahaya memegang kunci untuk menyelesaikan isu yang membingungkan seperti itu.
Mengapa cin.ignore() Penting
Apabila pengguna memasukkan nombor diikuti dengan rentetan, menekan kekunci Enter memasukkan aksara baris baharu ('n') ke dalam penimbal input. Selepas itu, cin >> bilangan; menggunakan nombor tetapi meninggalkan aksara 'n' dalam penimbal. Apabila cin.ignore() tiada, cin >> getline(cin, mystr); membaca aksara 'n' secara tidak sengaja dan bukannya input rentetan.
Fungsi cin.ignore() menyelesaikan masalah ini dengan mengabaikan bilangan aksara tertentu (256 dalam contoh kami) atau sehingga ia menemui pembatas (' n' dalam kes ini).
Meramalkan Keperluan untuk cin.ignore()
Ramalan apabila cin.ignore() diperlukan melibatkan pemahaman tentang potensi aksara tertinggal dalam penimbal input. Situasi di mana ia menjadi penting termasuk:
Contoh: Menyelidiki Kod
Pertimbangkan program C yang disediakan:
#include <iostream> #include <string> using namespace std; int main() { double num; string mystr; cout << "Please enter a number: " << endl; cin >> num; cout << "Your number is: " << num << endl; cin.ignore(256, '\n'); // Ignore any remaining characters cout << "Please enter your name: \n"; getline (cin, mystr); cout << "So your name is " << mystr << "? \n"; cout << "Have a nice day. \n"; }
Memasukkan panggilan cin.ignore() selepas cin >> bilangan; memastikan bahawa aksara 'n' diabaikan, membenarkan cin >> getline(cin, mystr); untuk membaca input rentetan dengan betul.
Atas ialah kandungan terperinci Mengapakah `cin.ignore()` Penting untuk Input Rentetan yang Betul Selepas Input Berangka dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!