Вот мои коды:подсказка «GetLine» получает пропущено, не работает, как предполагалось
#include <iostream>
#include <string>
using namespace std;
int main()
{
int age1;
int age2;
string name1;
string name2;
cout << "Please enter the name for one people: " << "\n";
getline (cin, name1);
cout << "Please enter the age for this people: " << "\n";
cin >> age1;
cout << "Please enter the name for another people: " << "\n";
getline (cin, name2);
cout << "Please enter the age for this people too: " << "\n";
cin >> age2;
if ((age1 <= 100 || age2 <= 100) && (age1 < age2))
{
cout << name1 << " is younger!" << "\n";
}
else if ((age1 <= 100 || age2 <= 100) && (age1 > age2))
{
cout << name2 << " is younder!" << "\n";
}
else if ((age1 <= 100 || age2 <= 100) && (age1 = age2))
{
cout << name1 << " and " << name2 << " are of the same age!" << "\n";
}
else
{
cout << "You've got some really old people that are well older than 100!";
}
}
Первый GetLine и CIN работает отлично. Я могу получить запрос на ввод. Однако вторая линия getline и cin запрашивается сразу, поэтому я могу только вводить данные для cin. (Второй getline пропускается!)
Если я использую четыре cins, программа будет работать правильно.
Напоминание: потоки, управляемые 'cin' и' cout', фактически не связаны; появление такого рода является артефактом того, как работает ваша консоль и типичные шаблоны ввода-вывода. Очень легко запутать себя, если предположить, что индивидуальные использования 'cin' и' cout' несут отношения, которых у них нет. (сами объекты имеют отношение к «привязанным», хотя это действительно не актуально здесь. Это означает, что если 'cin' исчерпывает данные, он будет очищать' cout', прежде чем он запрашивает больше данных из операционной системы) – Hurkyl