Qt QString toInt() 失败

Qt QString toInt() fails

我有一个包含“-3.5”的 'QString',但是如果我尝试使用 'toInt' 方法将其转换为整数,它会 returns 0。为什么?

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

    qDebug() << intTest;

intTest 将为 0 ?

与标准库中的 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";
}

如果你看the documentation,它说

Returns 0 if the conversion fails.

你应该使用

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);