gpt4 book ai didi

c++ - 如何在 Qt 中检查 C++ 中的类型

转载 作者:行者123 更新时间:2023-11-28 03:37:59 25 4
gpt4 key购买 nike

我需要检查用户输入的输入类型,如果不是所需的类型,我应该打印一条错误消息。我的代码是:

int ClassInput::inputInt(QString str)
{
signed int l;
std::cout << str.toStdString();
std::cin>>l;

while(!l)
{
eh.handleError(1);
std::cin>>l;
cin.clear ();
cin.ignore (1000, '\n');
}
return l;
}

但问题是当输入浮点值时它没有打印错误信息。此外,它将进入下一步并执行计算,就好像输入了正确的输入一样。

有时它会无限打印错误语句。请问有人可以更正我的代码吗?

最佳答案

我认为你的问题不是类型检查,而是值检查。所以 typeid 实际上不是一个好的选择。

特别是关于您的问题的解决方案。您应该对输入添加更严格的值检查。将用户的输入存储在 int 变量中不是一个好主意。因为如果用户键入一个 float 变量,它将被隐式转换为 int。这就是为什么您的代码在输入浮点值时不打印错误消息的原因。但不会影响你后续的计算。

另一件事,如果输入不是数字,而是字符,0 将分配给您的输入变量。

为了可靠地检查输入值,您应该将输入变量的类型更改为std:string 并检查字符串是否为合法输入。执行此操作的可能例程:

  1. 检查是否有非数字。

  2. 根据自己的程序需要判断是否为合法数字。

因此,与其编写粗略的 !l 检查,不如编写另一个单独的检查函数并在此处调用它。

关于c++ - 如何在 Qt 中检查 C++ 中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10275795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com