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