Возможный дубликат:
std :: string, чтобы плавать или удваивать
Я пишу калькулятор (изучаю C ++) и просто решил сделать калькулятор, так как это было первое, что я сделал при изучении Java.
Программа делает следующее:
при получении числа от пользователя в Java я использовал Double.parseDouble (число), чтобы проверить, является ли введенное число числом или нет.
Есть ли подобная команда в C ++? Я занимался исследованиями, и кажется, что вы должны использовать такие приемы, как сравнение его с эквивалентами ASCII и т. Д., В основном тонна кода для простой задачи … поэтому, прежде чем я выберу этот путь, я хотел бы остановиться здесь и посмотреть, если возможно есть какой-то вызов, который я могу сделать, чтобы проверить, является ли ввод числа. Мне нужно, чтобы он проверял отрицательные, нулевые и положительные значения, а также числа с десятичными числами … все остальное должно быть отклонено, и у пользователя снова должен быть введен запрос.
Когда я делал это в Java, я использовал оператор try / catch, и если ввод был неверным, он возвращал бы метод (другими словами, сам по себе), поэтому он зацикливался и снова запрашивал ввод у пользователя.
Спасибо!
Ты можешь использовать strtod
. Он обрабатывает значения недопущения и выхода за пределы диапазона удобным способом.
Кроме того, как отмечает Joachim Pileborg, если вы используете компилятор, совместимый с C ++ 11, существует std::stod
в стандартной библиотеке.
Используйте функцию double atof (const char *);
пример использования:
const char* = "3.14159";
double pi = atof(myDouble);
Как насчет использования isdigit функция.