比较 QString 中的两个数字

Asy*_*sya 1 c++ qstring qt

有两个值:

QString str1 = "3.5.8", str2 = "20.3.6";
Run Code Online (Sandbox Code Playgroud)

让我们想象一下,这两个numbers代表了软件version

众所周知,QString逐个字符进行比较。

如果我们以这种方式做出这个决定会怎么样:

str1.replace(".","");
str2.replace(".","");
int n = str1.toInt();
int m = str2.toInt();

if (n >= m)
{
    qDebug() << "YES";
} else if (n <= m) {
    qDebug() << "NO";
}
Run Code Online (Sandbox Code Playgroud)

也许有一个更优化和正确的方法来做到这一点。

您能否告诉我如何将这些值转换为数字,以便可以对它们进行整体比较。谢谢。

RA.*_*RA. 8

该类QVersionNumber旨在解决这个问题(需要 Qt 5.6+):

QVersionNumber version1 = QVersionNumber::fromString(str1);
QVersionNumber version2 = QVersionNumber::fromString(str2);

if (version1 > version2)
{
    qDebug() << "YES";
}
else
{
    qDebug() << "NO";
}
Run Code Online (Sandbox Code Playgroud)