Rumah >pembangunan bahagian belakang >C++ >Mengapakah `getline()` Mengembalikan Rentetan Kosong Selepas Input Nombor?
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!