验证:输入 - 整数? QT c ++

时间:2013-11-17 06:22:31

标签: c++ algorithm qt verification

请帮我优化检查输入值的功能。函数返回true并使用link返回发送值,如果输入 - 整数,或者如果输入char,则返回false,字符串(空)。我认为有两种方法可以加速:消除std :: string的使用或者不使用QString。

bool tryRead(int &v)
{
    QString s;
    string s1;
    cin >> s1;
    s = QString::fromStdString(s1);
    if (s.isEmpty())
    {
        cout << "Error! You entered empty string";
        return false;
    }
    bool isNumber = true;
    v = ((s.toInt(&isNumber)));
    if(isNumber == false)
        return false;
    return true;
}

2 个答案:

答案 0 :(得分:0)

这就是iostream运营商的用途。最小的实现是:

bool tryRead(int &v){
    cin >> v;
    return cin.good();
}

根据您实际想要完成的内容,您可能需要添加一些额外的健全性检查,错误处理和清理cin。

答案 1 :(得分:0)

您可以使用cin而不是coutQTextStream

QTextStream cin(stdin), cout(stdout);
int myint;
cin >> myint;
if(cin.status() != QTextStream::Ok)
    cout << "It is not an integer!" << endl;

检测到错误后,请务必调用QTextStream::resetStatus()来清除错误标记。