У меня странная проблема с atoi()
Я делаю преобразование следующим образом:
cout<<atoi(mystring.c_str())<<endl;
mystring — это строка с чем-то вроде 3245524.
Приведенный выше код вернет только 3 в стандартный вывод.
Теперь, если я уменьшу строку, например. меньше 1000000, то я возвращаю весь номер на стандартный вывод.
Любые идеи, что вызывает эту проблему? Это все еще значительно ниже предела C++ int, поэтому это не переполнение.
РЕДАКТИРОВАТЬ, некоторая дополнительная информация. Когда я упрощаю команду до простого:
cout<<mystring.c_str()<<endl;
Стандартный вывод выглядит примерно так: 3.24552e+06.
Проблема связана с этим?
mystring
на самом деле совсем не похоже на 3245524. - person Benjamin Lindley   schedule 12.02.2014atoi()
для числа с плавающей запятой? Или еще лучше: почему мы храним числа с плавающей запятой в виде строк? - person John3136   schedule 12.02.2014std::istringstream
илиstrtod
, которые позволяют проверить неудачное преобразование? - person nodakai   schedule 12.02.2014