Эквивалент Double.parseDouble () в C ++?

Возможный дубликат:
std :: string, чтобы плавать или удваивать

Я пишу калькулятор (изучаю C ++) и просто решил сделать калькулятор, так как это было первое, что я сделал при изучении Java.

Программа делает следующее:

  1. Запрашивает у пользователя первый номер
  2. Спрашивает, что пользователь хочет сделать с номером (-, +, *, /)
  3. Просит второй номер
  4. Отображает результат.

при получении числа от пользователя в Java я использовал Double.parseDouble (число), чтобы проверить, является ли введенное число числом или нет.

Есть ли подобная команда в C ++? Я занимался исследованиями, и кажется, что вы должны использовать такие приемы, как сравнение его с эквивалентами ASCII и т. Д., В основном тонна кода для простой задачи … поэтому, прежде чем я выберу этот путь, я хотел бы остановиться здесь и посмотреть, если возможно есть какой-то вызов, который я могу сделать, чтобы проверить, является ли ввод числа. Мне нужно, чтобы он проверял отрицательные, нулевые и положительные значения, а также числа с десятичными числами … все остальное должно быть отклонено, и у пользователя снова должен быть введен запрос.

Когда я делал это в Java, я использовал оператор try / catch, и если ввод был неверным, он возвращал бы метод (другими словами, сам по себе), поэтому он зацикливался и снова запрашивал ввод у пользователя.

Спасибо!

0

Решение

Ты можешь использовать strtod. Он обрабатывает значения недопущения и выхода за пределы диапазона удобным способом.

Кроме того, как отмечает Joachim Pileborg, если вы используете компилятор, совместимый с C ++ 11, существует std::stod в стандартной библиотеке.

4

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

Используйте функцию double atof (const char *);

пример использования:

const char* = "3.14159";
double pi = atof(myDouble);
0

Как насчет использования isdigit функция.

-1
По вопросам рекламы [email protected]