C ++: Реагирование на один пустой ввод против пустого входного файла - PullRequest
1 голос
/ 13 февраля 2012

Я все еще довольно новичок в этом, так что, возможно, это что-то очень простое, и я тоже могу потерпеть неудачу со словарем, но я все равно спрошу, потому что сам не могу понять это.

IЯ делаю программу, которая запрашивает разные команды для изменения определенных координат, и если вы даете пустую команду, она просто просит новую команду.Проблема заключается в том, что если вы даете программе входной файл для чтения команд (например: ./myprogram

1 Ответ

1 голос
/ 13 февраля 2012

Я не совсем уверен, что для вас «команда», но звучит так, как будто вы читаете отдельные строки и хотите исключить пустые (или с ошибками) строки. Простой способ сделать это - прочитать строки, но сначала пропустить начальные пробелы, пока не останется больше строк:

for (std::string line; std::getline(in >> std::ws, line); ) {
    process(line)
}

Выражение in >> std::ws пропускает все начальные пробелы, то есть все пробелы, символы новой строки, табуляции и т. Д. Как только это будет сделано, std::getline() читает содержимое только одной строки и помещает его в line. Если после пропуска начального пробела нет никаких данных, std::getline() завершается неудачно, потому что достигнута строка ввода. Если line нужно каким-то образом декодировать, вы можете просто поместить его в std::istringstream и декодировать оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...