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

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

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

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

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

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

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

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

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

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

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

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

0

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector