Я пишу эмулятор для своего курса операционных систем. У меня проблема в том, что нам нужно получить все наши файлы .job (они похожи на прикладные программы, загружаемые в эмулятор) из STDIN и прочитать их.
Позвоните:
./RMMIX < aJob.job
Я просто пропустил его с помощью
while(getline(std::cin, line))
построчно. Проблема в том, что если я ничего не помещаю в STDIN, то cin будет ждать ввода пользователя, а НЕ того, что я хочу. Мне нужна программа, чтобы распознавать отсутствие текста в STDIN и завершать работу, а не ждать вместо этого ввода пользователя.
Я определил, что могу запрашивать длину следующим образом:
size_t beg = std::cin.tellg();
std::cin.seekg(0, std::ios_base::end);
size_t end = std::cin.tellg();
std::cin.seekg(0, std::ios_base::beg);
и завершать работу, если std :: cin имеет длину из 0.
Есть ли другие решения этой проблемы? Это портативное решение?