C++ atoi() возвращает только первую цифру

У меня странная проблема с atoi()

Я делаю преобразование, как это:

cout<<atoi(mystring.c_str())<<endl;

mystring - это строка с чем-то вроде 3245524

Приведенный выше код вернет только 3 в стандартный вывод.

Теперь, если я уменьшу строку, например, до 1000000, я получу все число, возвращаемое в стандартный вывод.

Есть идеи, что вызывает эту проблему? Это все еще намного ниже предела C++ int, так что это не какое-то переполнение.

РЕДАКТИРОВАТЬ, некоторая дополнительная информация. Когда я упрощаю команду просто:

cout<<mystring.c_str()<<endl;

Stdout что-то вроде 3.24552e+06

Проблема связана с этим?

1 ответ

Из вашего редактирования:
Содержимое mystring равно "3.24552e+06", то есть научное (с плавающей запятой) строковое представление для числа 3245520.
Следовательно, atoi, как и ожидалось, анализирует первое целое число, которое находит в mystring, а именно: 3.
Если mystring содержит "3245520", ваш вызов atoi вернет целое число 3245520.

Другие вопросы по тегам