Rumah > pembangunan bahagian belakang > C++ > Mengapakah `getline()` Gagal Selepas Menggunakan `cin` dengan `>>` dalam C ?

Mengapakah `getline()` Gagal Selepas Menggunakan `cin` dengan `>>` dalam C ?

DDD
Lepaskan: 2024-11-12 04:59:02
asal
781 orang telah melayarinya

Why Does `getline()` Fail After Using `cin` with `>>` dalam C ? 
>` dalam C ? " />

Memahami getline() dalam C

Apabila menggunakan kaedah getline() untuk mendapatkan semula input pengguna dalam C , adalah penting untuk mengingati isu biasa yang timbul. Apabila digunakan serta-merta selepas menggunakan cin dengan operator >> dengan betul.

Masalahnya:

Mari kita pertimbangkan coretan kod berikut:

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

Dalam kod ini, dijangkakan getline() akan membaca input pengguna dan menyimpannya dalam messageVar Walau bagaimanapun, dalam kes tertentu, getline() berhenti lebih awal, meninggalkan messageVar kosong.

Penyelesaian:

Untuk menyelesaikan isu ini, adalah perlu untuk membuang aksara baris baharu yang tertinggal dalam penimbal input daripada cin sebelumnya >> operasi ini boleh dicapai menggunakan cin.ignore():

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

Sebab untuk Isu:

Apabila menggunakan operator >> ia membaca input sehingga aksara ruang putih (cth., ruang atau baris baharu) ditemui, ia meninggalkan aksara baris baharu dalam penimbal input, menyebabkan getline() untuk berhenti membaca kerana ia mentafsir baris baharu sebagai penghujung input. Dengan menggunakan cin.ignore(), aksara baris baharu dialih keluar daripada penimbal, membolehkan getline() berfungsi dengan betul.

Atas ialah kandungan terperinci Mengapakah `getline()` Gagal Selepas Menggunakan `cin` dengan `>>` 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan