Mengapakah getline() Menamatkan Input Secara Pramatang dalam C ?

Barbara Streisand
Lepaskan: 2024-11-10 17:27:02
asal
944 orang telah melayarinya

Why Does getline() Terminate Input Prematurely in C  ?

Fungsi Menyelesaikan masalah getline() dalam C

Semasa menggunakan kaedah getline() untuk mendapatkan semula mesej yang dimasukkan pengguna, sesetengah pembangun menghadapi masalah di mana kaedah ditamatkan sebelum waktunya input.

Isu: Program gagal menunggu input pengguna selepas menggesa dengan "Taip mesej anda: " menggunakan kod:

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);
Salin selepas log masuk

Pendasar Masalah:

Bila cin >> digunakan sebelum getline(), aksara baris baharu ditinggalkan dalam penimbal input. Baris baharu ini kekal dalam penimbal apabila getline() cuba membaca input, mengakibatkan penamatan serta-merta.

Penyelesaian:

Untuk menangani masalah ini, adalah penting untuk mengalih keluar aksara baris baharu daripada penimbal input sebelum menggunakan getline(). Ini boleh dicapai menggunakan fungsi cin.ignore(). Kod yang diubah suai:

string messageVar;
cout << "Type your message: ";
cin.ignore(); // Flushes the newline character
getline(cin, messageVar);
Salin selepas log masuk

Dengan membuang aksara baris baharu, getline() boleh membaca input dengan betul sehingga pengguna memasuki baris baharu, membenarkan untuk mendapatkan semula mesej yang dimaksudkan.

Atas ialah kandungan terperinci Mengapakah getline() Menamatkan Input Secara Pramatang 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