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.