Прошу прощения за любые ошибки, связанные с любителем, но я по-прежнему новичок в этом. Для моего класса нам нужно преобразовать двойной ввод в строку для использования в другой части проекта. Проверка целых чисел работала очень хорошо, и я попытался использовать часть кода из этого предыдущего вопроса Validating a double in c++ , хотя, к моему огорчению, это не сработало.C++ Проверка двойного строчка
Вот мой код:
string input;
bool valid;
double num;
//Verification of valid inputs
do
{
valid = true;
cout << "What is the " << name << " rate of the population? (% per year): ";
getline(cin, input);
num = input.length();
if (num == 0)
{
cout << "\nNo data was entered, please enter a number.\n";
valid = false;
}
else
{
for (double i = 0; i < num; i++)
{
if (input.at(i) < '0' || input.at(i) > '9')
{
cout << "\nPlease enter a valid, positive number.\n";
valid = false;
break;
}
}
}
} while (valid == false);
return stod(input);
Спасибо.
Редактировать: Я только что нашел это How do i verify a string is valid double (even if it has a point in it)?, и я могу с уверенностью сказать, что понятия не имею, что происходит.
Ответ в последней ссылке, (http://stackoverflow.com/a/29169409/464581), просто используется 'std :: stod', это хорошо. Просто. Вы можете * использовать * эту функцию, даже если вы ее не понимаете. ;-) –
Как насчет использования ['std :: stod'] (http://en.cppreference.com/w/cpp/string/basic_string/stof) или [' std :: strtod'] (http: // en.cppreference.com/w/cpp/string/byte/strtof)? [Пример здесь] (http://stackoverflow.com/a/32792825/440558) (с целыми числами, но все тот же принцип). –
Я попытался использовать пример из http://stackoverflow.com/questions/32792790/read-whether-int-or-string-using-the-file-extraction-operator/32792825#32792825, и он сломал мою программу = ( – Bowski