Как я могу сигнализировать терминалу XTerm к концу ввода. В моем случае я запускаю программу на C ++ в консоли XTerm и хочу сообщить программе об окончании ввода нажатием некоторой комбинации кнопок на клавиатуре (я пробовал Ctrl + D Ctrl + Z). Моя программа выглядит следующим образом:
map<int,string>info;
string name;
int age;
cin>>name;
while( **?????????** ){ //Input till EOF , missing logic
cin>>age;
info.insert( pair<int,string>(age,name) );
cin>>name;
}
Программа продолжается после получения конца входного сигнала от терминала.
Вы всегда нужно проверить вход после читая, т.е. ваша программа должна выглядеть примерно так:
while (std::cin >> name >> age) {
// do something with name and age
}
Это будет читать из std::cin
пока что-то не получится. Вы можете проверить, если std::cin.eof()
устанавливается, чтобы определить, является ли достижение ошибки входным сигналом причиной ошибки или произошел какой-либо другой сбой, например, попытка ввести что-то, что не является числом для age
,
Других решений пока нет …