История изменений
Исправление PRN, (текущая версия) :
ПыСы. При необходимости leading spaces покрываются одним единственным подобным «if» сразу после вычитывания ключа. При этом пред-проверку лучше оставить так как она позволяет избежать создания относительно «тяжёлого» istringstream когда он гарантировано не нужен. Это как я бы это делал. А так конечно да - существует множество способов различной степени извращённости как добиться того же результата, но приведённый мне представляется наиболее простым и оптимальным.
Простое, оптимальное и работающее решение это:
- if (!(tokens >> key)) {
+ if (!(tokens >> std::skipws >> key)) {
и проверку ниже перенести, а не все вышеописанное. А еще лучше, специализированную либу заюзать и не изобретать велосипедов с квадратными колесами.
Исходная версия PRN, :
ПыСы. При необходимости leading spaces покрываются одним единственным подобным «if» сразу после вычитывания ключа. При этом пред-проверку лучше оставить так как она позволяет избежать создания относительно «тяжёлого» istringstream когда он гарантировано не нужен. Это как я бы это делал. А так конечно да - существует множество способов различной степени извращённости как добиться того же результата, но приведённый мне представляется наиболее простым и оптимальным.
Простое, оптимальное и работающее решение это:
- if (!(tokens >> key)) {
+ if (!(tokens >> std::skipws >> key)) {
а не все вышеописанное. А еще лучше, специализированную либу заюзать и не изобретать велосипедов с квадратными колесами.