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