cin >> не работает с getline () - PullRequest
       19

cin >> не работает с getline ()

0 голосов
/ 30 ноября 2011
#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?

Ответы [ 2 ]

5 голосов
/ 01 декабря 2011

После cin>>age; у вас все еще есть новая строка в потоке, которая дает пустую строку для имени.

Вы можете решить эту проблему, просто добавив еще один вызов getline() после получения возраста ивыбрасывая результат.Другой вариант - вызвать cin.ignore(BIG_NUMBER, '\n');, где BIG_NUMBER это MAX_INT или что-то в этом роде.

1 голос
/ 01 декабря 2011

getline() не будет работать с int или любым числом в этом отношении.Он определяется так:

istream& getline (char* s, streamsize n );

istream& getline (char* s, streamsize n, char delim );

Итак, он принимает строки и char*;не цифры.

...