【发布时间】:2013-11-17 06:22:30
【问题描述】:
请帮我优化检查输入值的功能。函数返回 true 并使用链接发送值,如果输入 - 整数,或者如果输入 char、string(empty),则返回 false。我认为有2种方法可以加快速度:消除使用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 次: s=QString::fromStdString(s1); v=((s.toInt(&isNumber)));我认为如果读取 QString 或检查字符串会更快。
-
您希望用户输入多快才能有所作为?
-
将最后 3 行替换为
return isNumber;将有助于我晚上睡觉。同样使用QIntValidator是首选的“Qt”方式(qt-project.org/doc/qt-5.1/qtgui/qintvalidator.html)。 -
你可以按照here的描述直接从cin读取到QString。
标签: c++ algorithm qt verification