Я в основном пытаюсь получить имя пользователя (и я хочу, чтобы они могли использовать пробелы, поэтому я должен использовать getline), а затем название их вымышленного королевства. Но когда я запускаю этот код, он проскакивает впереди себя. Он запрашивает имя, но затем он пропускает и запрашивает имя королевства, прежде чем разрешить пользователю вводить свое имя. Я пробовал cin.ignore(), но это не работает. У кого-нибудь есть предложения?Getline не работает по назначению со строками
string playerName = "nyd"; //declaring string playerName
string kingdomName = "nyd"; //declaring string countryName
int monarchAge; //declaring monarch age variable.
cout << " Welcome, your majesty! What is your name?\n";
getline(cin,playerName);
cout << " And what is the name of your grand kingdom, " << playerName << "?\n";
getline(cin,kingdomName);
cin.ignore();
cout << " And finally, how old are you, Lord " << playerName << " of " << kingdomName << "?\n";
cin >> monarchAge;
Скорее всего http://stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction, и этот вызов 'ignore', скорее всего, просто ест первый символ от возраста. – chris
Почему вы называете 'cin.ignore();' на самом деле? –
Я читал где-то, что cin.ignore() может помочь, поэтому я его попробовал, не думаю, что –