c++ - C++ 中的字符串、整数和 float 验证

标签 c++ validation input

大编辑:我添加了,它现在检测字符串输入:)!

if (false == isdigit(grade[0])

编辑:问题:无法确定我输入的是字符串而不是 float 还是整数。

我一直在浏览这个网站,其中有很多关于检查字符串输入的帖子。这是我尝试结合我所学的一切的看法,正如你所看到的,它并没有按照我的意愿去做。

这样的输入和发生的事情:

用户输入:“1.2”:可以判断它是一个 float

用户输入:“1”:可以判断它是一个整数

用户输入:“a”:错误:认为它是一个 float 。这就是问题。如果我输入“a”,我需要程序识别输入的字符串并调用某些函数。

一些指导将不胜感激:

#include "assessGrade.h"


int main(void)
{

int finalGrade = 0;
int gradeHolder = 0;
int numberGrade[5] = { 0,0,0,0,0 };
double doubleGrade = 0;

//my beloved bool's
bool floatGrade = false;
bool intGrade = false;
bool stringGrade = false;

//======================================//
// Getting the input from user          //
// Also check for stringfloat/int type  //
//======================================//
std::string grade;
std::getline(std::cin, grade);
std::stringstream stream(grade);


if (false == isdigit(grade[0]))
{
    //it's not a digit
    cout << "STRING: " << grade << endl;
    stringGrade = true;
}

else if(!(stream >> gradeHolder) || grade.find('.') != std::string::npos)
{
    //its a float!
    cout << "FLOAT: " << grade << endl;
    floatGrade = true;
}
else
{
    //it's a int!
    cout << "INTEGER: " << grade << endl;
    intGrade = true;
}


//======================================//
// Parsing the input                    //
//======================================//
if (intGrade == true)
{
    //do int stuff here
}


else if (floatGrade == true)
{
    //do float stuff here
    //doubleGrade = grade;
}


else
{
    //do string stuff here
}
    return 0;
}

最佳答案

要准确确定“浮点值”是什么绝非易事。 +1.0E-02 是浮点变量吗?里面有一封信!

您几乎得到了不错的解决方案。使用 std::stringstream 查看是否可以提取整数或浮点值。如果第一次尝试失败,您将需要 .clear() 它。

关于c++ - C++ 中的字符串、整数和 float 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987446/

相关文章:

c++ - 通过\see 命令引用转换运算符

php - 咨询阵列 VS 咨询数据库以验证数据

javascript - 在文本框中输入任何内容之前会出现验证错误消息

python - 将数据从 HTML 表单发送到 Flask 中的 Python 脚本

java - 使用 Scanner 类的问题

c++ - 区分getline中的定界符和换行符

c++ - LocalAlloc 和 LocalRealoc 用法

c++ - 允许 C++ 和 C 流独立缓冲的潜在好处是什么?

c# - ASP.NET 自定义验证器客户端和服务器端验证未触发

javascript - Angular JS - 如何验证数字输入中的位数