Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah getline() Menamatkan Input Secara Pramatang dalam C ?

Mengapakah getline() Menamatkan Input Secara Pramatang dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-11-10 17:27:02945semak imbas

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);

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);

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!

Kenyataan:
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