Возможный дубликат:
Как преобразовать строку в int в C ++?
В C ++ 03 существует множество способов преобразовать строку в int. Лучшее, что я нашел до сих пор, это:
string text;
cin>>text;
int converted;
if ( !(istringstream(text) >> converted) ){
cout<<"conversion failed\n";
}
cout<<"the converted string is "<<converted;
Проблема с этим решением в том, что оно принимает «12 обезьян» и без колебаний преобразует их в 12. Есть ли какой-нибудь простой способ проверить это и в этом случае вывести «сбой преобразования»?
Стоит отметить, что я пробовал atoi (), atol () и strtol (), но тот факт, что он возвращает 0 в случае неудачи, бесполезен. Как мне узнать, не было ли в строке «0»? Также нет проверки диапазона (кроме strtol ()). Не говоря уже о проблеме «12 обезьян», там тоже присутствует.
boost::lexical_cast
, сделайте свой собственный, как я сделал здесь. - person Robᵩ   schedule 08.11.2012