Rumah > pembangunan bahagian belakang > C++ > Mengapakah `getline` tidak meminta Input dalam C ?

Mengapakah `getline` tidak meminta Input dalam C ?

Barbara Streisand
Lepaskan: 2024-11-29 14:14:14
asal
467 orang telah melayarinya

Why Doesn't `getline` Prompt for Input in C  ?

getline Tidak Mendorong Input: Kes Isu Penampan

Apabila menggunakan getline(cin, mystr) dalam C , anda mungkin menghadapi isu di mana ia tidak menggesa input pengguna dan sebaliknya memberikan nilai awal "0" kepada pembolehubah harga. Ini kerana getline membaca input sehingga ia menemui aksara baris baharu ('n'), dan mungkin terdapat aksara baris baharu yang berlarutan dalam penimbal input.

Masalah timbul apabila mencampurkan operator aliran input seperti >> dengan getline. Apabila anda menggunakan cin >> i untuk membaca integer, input pengguna diikuti oleh aksara baris baharu. Walau bagaimanapun, baris baharu ini kekal dalam penimbal input. Apabila anda kemudiannya memanggil getline, ia mentafsir aksara baris baharu sebagai input, tanpa menggesa pengguna.

Penyelesaian Kemungkinan:

  • Abaikan Aksara Baris Baharu : Sebelum memanggil getline, gunakan cin.ignore() untuk mengalih keluar aksara baris baharu daripada penimbal input. Contohnya:
cin.ignore();
getline(cin, mystr);
Salin selepas log masuk
  • Gunakan Fungsi Input Tersuai: Tulis fungsi yang membaca input sebagai rentetan dan menukarnya kepada jenis data yang dikehendaki, mengendalikan aksara baris baharu sewajarnya. Contohnya:
int getInt() {
  string input;
  getline(cin, input);
  return stoi(input);
}
Salin selepas log masuk
  • Elakkan >> untuk Input: Gunakan getline secara eksklusif untuk input dan tukar rentetan kepada jenis data yang diingini. Pendekatan ini meningkatkan keselamatan dan keteguhan kod.

Amalan Disyorkan:

Adalah amalan terbaik untuk menggunakan getline untuk semua input, memastikan aksara baris baharu dikendalikan dengan betul dan input sentiasa digesa untuk. Elakkan mencampurkan >> dengan getline untuk mengelakkan isu penimbal ini.

Atas ialah kandungan terperinci Mengapakah `getline` tidak meminta Input dalam C ?. 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