Я пытаюсь, чтобы пользователь ввел три ввода: имя пользователя, идентификатор и альтернативный идентификатор. Если пользователь вводит возврат имени пользователя, программа должна завершиться. Если пользователь вводит имя пользователя и вводит возврат для следующих двух идентификаторов, ввод должен отображаться как недействительный. Я пытался использовать cin, fgets и get (я знаю, что get - это обычно плохое программирование). Когда я использовал cin, я пытался использовать cin.clear () и cin.ignore (), чтобы пропустить запись новой строки. Первый ввод всегда работает, но второй вызов ввода пропускается.
Фрагмент кода:
int main(){
string name, altID, tempUWFID;
char input;
cout << "Name> ";
// if (cin.get() == '\n') - This was one way that I tried.
if ((input = getchar()) == '\n')
break;
else
cin >> name;
cout << "UWF ID> ";
if ((input = getchar()) != '\n')
cin >> tempUWFID;
cout << "Alternate ID> ";
if ((input = getchar()) != '\n')
cin >>altID;
cout << "\nThank you for abusing my program, have a nice day!\n";
Вывод:
Welcome to Voter's Registration
Name> johnny
UWF ID> Alternate ID>
ad
Invalid UWF ID
Name>
Thank you for abusing my program, have a nice day!
Ожидаемый вывод:
Welcome to Voter's Registration
Name> johnny
UWF ID> somenumber
Alternate ID> someothernumber
Invalid UWF ID
Name>
Thank you for abusing my program, have a nice day!