请帮我优化检查输入值的功能。函数返回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;
}
答案 0 :(得分:0)
这就是iostream运营商的用途。最小的实现是:
bool tryRead(int &v){
cin >> v;
return cin.good();
}
根据您实际想要完成的内容,您可能需要添加一些额外的健全性检查,错误处理和清理cin。
答案 1 :(得分:0)
您可以使用cin
而不是cout
和QTextStream
。
QTextStream cin(stdin), cout(stdout);
int myint;
cin >> myint;
if(cin.status() != QTextStream::Ok)
cout << "It is not an integer!" << endl;
检测到错误后,请务必调用QTextStream::resetStatus()
来清除错误标记。