c++验证String中的Double类型
c++ Validating a Double in a String
请原谅任何业余错误,我在这方面还是新手。对于我的类,我们需要将双输入转换为字符串,以便在项目的不同部分使用。整数的验证工作得很好,我尝试使用前面问题中的一些代码在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);
谢谢。
编辑:我只是发现这我如何验证字符串是有效的双(即使它有一个点在它)?我可以肯定地说我不知道发生了什么。
如果你真的很想手工完成,可以看看下面的方法:
如何从字符串中手动解析浮点数
https://www.daniweb.com/programming/software-development/code/217315/c-function-stod-string-to-double-convert-a-string-to-a-double并阅读评论。这不是很简单,但应该行得通。或者更好的是,从c++中检查stopd的代码。
为什么要使用双精度对象作为字符串的索引?此外,我将跳过使用++
来增加双精度。
我明白了
只是需要在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的整数,用于计数点,并确保只输入一个。
相关文章:
- 在c++中为double类型的数组创建一个unique_ptr
- C++:无法使用条件类型在模板函数中使用 'double' 类型的 lvalue 初始化 'char*' 类型的参数
- 格式“%lf”期望“ double *”类型的论点,但参数2具有“ poly term **”类型
- 错误:无法将 "double*" 类型的值分配给类型 "double" 的实体
- 使用Float或Double类型时不显示小数
- 'double' 和 'double' 类型的无效操作数
- 为什么用“std::chrono”进行时差测量时,与“double”类型相比,用“float”类型给出的有效数字更多
- 在当前的C++和Java中,double类型和float类型:if(x==0.0)是正确的
- double类型的c++变量总是将其值更改为-9,25596e+061
- 将一个short类型数组转换为double类型数组
- 最快的复制double类型的方法
- 将Vec*类型强制转换为double*类型
- c++验证String中的Double类型
- 将数据从const void *data转换为double类型
- 具有double类型的变量参数的函数的奇怪输出
- C++错误:无效的 'double' 类型的操作数和二进制"运算符"<未解析的重载函数类型"
- 在c#中使用非托管c++代码对所有double类型返回0
- 如何正确地在c++中打印double类型的cout
- 将double类型强制转换为int:它是如何工作的
- 错误:将' double* '和' double '类型的操作数转换为二进制' operator/ '无效