getline Not Prompting for Input
Dalam kod anda, apabila anda memanggil getline(cin, mystr);, program gagal untuk menggesa pengguna untuk input. Ini kerana apabila anda sebelum ini menggunakan cin >> nama; dan cin >> i;, aksara baris baharu yang dimasukkan pengguna selepas menaip respons mereka ditinggalkan dalam penimbal input.
Penempadanan Ruang Putih
Perihal >> operator dihadkan ruang putih. Ini bermakna apabila pengguna menekan kekunci Enter selepas memasukkan data, aksara baris baharu tidak disimpan dalam pembolehubah tetapi kekal dalam penimbal input.
Gelagat getline
getline juga dihadkan ruang putih. Apabila anda memanggil getline, ia mencari penimbal input untuk aksara baris baharu. Memandangkan watak baris baharu sudah ada dalam penimbal, getline menemui perkara yang dicarinya serta-merta dan tidak menggesa pengguna untuk input.
Penyelesaian
Untuk menyelesaikan isu ini , anda boleh menggunakan salah satu kaedah berikut:
Kod Dipertingkat:
Berikut ialah versi kod anda yang diperbaik yang menggunakan getline secara eksklusif:
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string name; int age; float price; cout << "Hello World!" << endl; cout << "What is your name? "; getline(cin, name); cout << "Hello " << name << endl; cout << "How old are you? "; getline(cin, age); cout << "Wow " << age << endl; cout << "How much is that jacket? "; getline(cin, price); stringstream(price) >> price; cout << price << endl; system("pause"); return 0; }
Atas ialah kandungan terperinci Mengapakah `getline` tidak meminta Input Selepas Menggunakan `cin`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!