#include <iostream> #include <string> using namespace std; int main () { string str; int age; cout << "Please enter age: "; cin>>age; cout << "Please enter full name: "; getline (cin,str); cout << "Thank you, " << str << ".\n"; }
Почему функция getline () не работает, когда я использую uperator >> для ввода целого числа? Что лучше использовать для ввода int?
После cin>>age; у вас все еще есть новая строка в потоке, которая дает пустую строку для имени.
cin>>age;
Вы можете решить эту проблему, просто добавив еще один вызов getline() после получения возраста ивыбрасывая результат.Другой вариант - вызвать cin.ignore(BIG_NUMBER, '\n');, где BIG_NUMBER это MAX_INT или что-то в этом роде.
getline()
cin.ignore(BIG_NUMBER, '\n');
BIG_NUMBER
getline() не будет работать с int или любым числом в этом отношении.Он определяется так:
int
istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim );
Итак, он принимает строки и char*;не цифры.
char*