场景:我有一个简单的应用程序,它检查它的 RSS 提要并查看是否有更新的版本可用。因此,我想检查当前版本是否低于 RSS 提要中的版本。理想情况下很简单:
CURRENTVERSION < updateVersion
问题:版本控制由major.minor.revision.build 组成,我不知道如何将其解析为数字来执行版本检查。
这些是要比较的参数:
#define CURRENTVERSION = 0,2,5,1
从网上下载的版本是"0.2.6.1"
(作为字符串)。
检查一个是否小于另一个的最佳方法是什么?
我尝试将其转换为双精度值,但值变为 0.2(仅解析第一个 . ,忽略其余部分)。
约束:它不能是使用 .NET 库的解决方案,因为应用程序必须在没有 .NET 框架的情况下工作。
(编辑)感谢 Karthik T 的回答,我选择了以下解决方案。
struct Version
{
Version(string versionStr)
{
sscanf(versionStr.c_str(), "%d.%d.%d.%d", &major, &minor, &revision, &build);
}
bool operator<(const Version &otherVersion)
{
if(major < otherVersion.major)
return true;
if(minor < otherVersion.minor)
return true;
if(revision < otherVersion.revision)
return true;
if(build < otherVersion.build)
return true;
return false;
}
int major, minor, revision, build;
};