請原諒任何業餘錯誤,我對此仍然很陌生。對於我的課程,我們需要將雙輸入轉換爲字符串以用於項目的不同部分。整數的驗證工作得很好,我試圖使用這個前面的問題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