Qt QString toInt()失败

时间:2016-10-02 12:37:11

标签: c++ qstring

我的'QString'包含“-3.5”,但是如果我尝试使用'toInt'方法将其转换为整数,则返回0.为什么?

    QString strTest = "-3.5";
    int intTest = strTest.toInt();

    qDebug() << intTest;

intTest将为0?

2 个答案:

答案 0 :(得分:5)

与标准库中的std::stoi和流相反,Qt字符串要求整个字符串是一个有效的整数来执行转换。您可以使用toDouble作为解决方法。

您还应该使用可选的ok参数来检查错误:

QString strTest = "-3.5";
book ok;
int intTest = strTest.toInt(&ok);
if(ok) {
    qDebug() << intTest;
} else {
    qDebug() << "failed to read the string";
}

答案 1 :(得分:4)

如果你看the documentation,就说

  

如果转换失败,则返回0。

你应该使用

bool ok;
strTest.toInt(&ok);

然后检查ok的值 - 否则,您不确定0是实际值还是失败的指示。

在这种情况下,它失败了,因为它实际上不是一个整数(它有一个小数点)。请注意,您可以使用toDouble(并在那里检查ok!),然后根据需要投射结果。

QString strTest = "-3.5";

bool ok;
double t = strTest.toDouble(&ok);

if(ok)
    qDebug() << static_cast<int>(t);