Ситуация такова, что даже хваленый boost::lexical_cast может удивить: https://wandbox.org/permlink/PP0RTfmifVO816U0
std::cout << boost::lexical_cast<unsigned int>("-1"); // исключения не будет
Спойлер: http://www.boost.org/doc/libs/1_60_0/doc/html/boost_lexical_cast/frequently_a...
Скажите, есть ли вообще в природе средства для парсинга целых чисел (пускай даже ограниченные до radix=10) которые не удивляют?
Т.е. :
- Не пропускают пробелов вначале строки
- Интерпретируют всю строчку (а не до первого непонятного символа)
- Нет автоматического определения radix (т.е. "012" будет 12 а не 10)
- Могут интерпретировать подстроку (но польностью). Как boost::lexical_cast(str, len)
- Трактуют 8-ми битные типы как числа (а не как символ/байт, ибо первый байт строки я и сам могу взять)
- ... не имеют других подводных камней