首页 文章

验证:输入 - 整数? QT c

提问于
浏览
0

请帮我优化检查输入值的功能 . 函数返回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

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

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

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

  • 0

    您可以使用 QTextStream 而不是 cincout .

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

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

相关问题