Rumah >pembangunan bahagian belakang >C++ >Mengapakah fungsi C `getline()` saya digantung selepas menggunakan `cin`?

Mengapakah fungsi C `getline()` saya digantung selepas menggunakan `cin`?

Barbara Streisand
Barbara Streisandasal
2024-11-09 18:22:02552semak imbas

Why does my C   `getline()` function hang after using `cin`?

Menggunakan getline() dalam C : Menyelesaikan Masalah Input Pengguna

Apabila menggunakan kaedah getline() untuk mendapatkan semula input pengguna, adalah penting untuk menjadi menyedari kemungkinan perangkap. Pertimbangkan kod berikut:

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);

Walaupun cuba mendapatkan input pengguna, kod ini digantung selama-lamanya, tidak pernah menangkap mesej yang diingini.

Punca Isu:

Isu ini berpunca daripada fakta bahawa cin >> operator meninggalkan aksara baris baru n dalam penimbal input. Ini menjadi masalah untuk getline(), yang membaca input sehingga menemui baris baharu. Akibatnya, getline() ditamatkan secara pramatang tanpa sebarang input diberikan.

Penyelesaian:

Untuk menyelesaikan masalah ini, anda mesti membuang aksara baris baharu daripada penimbal input sebelum memanggil getline(). Ini boleh dicapai menggunakan cin.ignore():

string messageVar;
cout << "Type your message: ";
cin.ignore();
getline(cin, messageVar);

Dengan menambahkan cin.ignore(), aksara baris baharu yang ditinggalkan dalam penimbal akan dibuang, membenarkan getline() berfungsi seperti yang diharapkan. Ia akan menunggu input pengguna dan menangkap mesej yang dimasukkan apabila kekunci Enter ditekan.

Atas ialah kandungan terperinci Mengapakah fungsi C `getline()` saya digantung selepas menggunakan `cin`?. 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