Rumah >pembangunan bahagian belakang >C++ >Mengapakah `getline()` Mengembalikan Rentetan Kosong Selepas Input Nombor?

Mengapakah `getline()` Mengembalikan Rentetan Kosong Selepas Input Nombor?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-23 19:05:14466semak imbas

Why Does `getline()` Return an Empty String After Number Input?

Isu Input getline() [Pendua]

Apabila menggunakan getline() untuk mendapatkan semula input pengguna bagi pembolehubah rentetan (str), ia adalah penting untuk mengetahui tingkah laku watak baris baharu. Selepas mendapatkan semula nilai berangka, aksara baris baharu kekal dalam penimbal input. Ini boleh menyebabkan panggilan getline() berikutnya kembali serta-merta dengan rentetan kosong.

Dalam kod yang disediakan, baris baharu selepas input nombor tidak digunakan,导致getline(cin, str) untuk segera kembali dengan kosong rentetan.

Penyelesaian:

Untuk melangkau aksara baris baharu dan memastikan gelagat getline() yang betul, gunakan manipulator ws (ruang putih):

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, str);

Pernyataan cin.ignore() membaca dan membuang semua aksara yang tinggal dalam penimbal input sehingga baris baharu seterusnya, dengan berkesan menggunakan baris baharu .

Atas ialah kandungan terperinci Mengapakah `getline()` Mengembalikan Rentetan Kosong Selepas Input Nombor?. 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