请原谅任何业余错误,我还是很陌生。对于我的类,我们需要将双输入转换为字符串以在项目的不同部分中使用。对整数的验证工作正常,我尝试使用上一个问题中的一些代码Validating a double in 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)?,我可以肯定地说我不知道发生了什么。
答案 0 :(得分:0)
如果您真的热衷于手动操作,请查看以下方法:
How to manually parse a floating point number from a string
阅读评论。这不是很简单,但应该有效。或者甚至更好,检查来自C ++的stod代码。
答案 1 :(得分:0)
为什么使用double作为字符串的索引?另外,我会跳过使用++
来增加双倍。
答案 2 :(得分:0)
想出来。
只需在if语句中添加内容即可。
if ((input.at(i) < '0' || input.at(i) > '9') && input.at(i) != '.')
{
cout << "\nError! illegal character was entered.\n";
valid = false;
break; // 12w345
if (input.at(i) == '.')
ct++;
if (ct > 1)
{
cout << "Error! Only one dot allowed.";
valid = false;
ct是一个值为0的整数来计算点并确保只输入一个。