По умолчанию все отформатированные операции извлечения (перегрузки operator>>()
) пропускают пробелы до извлечения элемента - вы уверены, что хотите разойтись с этим подходом?
Если да, то вы, вероятно, могли бы достичь того, чего хотите, путем получения нового класса my_istream
из istream
и переопределения каждого operator>>()
для вызова следующего метода в конце:
void skip_whitespace() {
char ch;
ios_base old_flags = flags(ios_base::skipws);
*this >> ch; // Skips over whitespace to read a character
flags(old_flags);
if (*this) { // I.e. not at end of file and no errors occurred
unget();
}
}
Это довольно много работы. Здесь я опускаю несколько деталей (например, тот факт, что более общим решением было бы переопределить шаблон класса basic_istream<CharT, Traits>
).