C/C++ 版本比较demo分享

C/C++ 简单实现版本比较

网上有各种实现方式,我觉得搞复杂了,没必要整那么多事...

版本字符串有很多表示形式,如:
v 0.0.0.1;
v 0.0.0.2;
ver 0.0.0.1;
ver 0.0.0.2;
0.0.0.1;
0.0.0.2;
v 0.0.0.1_beta;
v 0.0.0.2_beta; 等等各种形式。
每一组版本号都有相同的格式,唯一不同的是版本号的数值,即:0.0.0.1和0.0.0.2不同,其他字符都相同。

而相同字符的ascii码都相等。所以可以比较ascii码来确定版本大小,类型转换都可以省了。

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
/************************************************************************/
/* version_old == version_new return 0
   version_old < version_new return 1
   version_old > version_new return -1*/
/************************************************************************/
const int version_compare(const string& version_old, const string& version_new)
{
	int lenf = 0;

	if (version_old.size() < version_new.size())
		lenf = version_old.size();
	else
		lenf = version_new.size();

	for (int i = 0; i < lenf; ++i)
	{
		if (version_old[i] > version_new[i])
		{
			return -1; // 新版本大
		}
		else if (version_old[i] < version_new[i])
		{
			return 1; // 新版本小
		}
		// new_version[i] == old_version[i] 则继续比较下一位
	}
	return 0;
}

int main()
{
	string versionold = "1.0.2.1";
	string versionnew = "2.0.2.2";
	if (version_compare(versionold, versionnew) == 1)
	{
		printf("%s > %s", versionnew.c_str(), versionold.c_str());
	}
	else
	{
		printf("%s <= %s", versionnew.c_str(), versionold.c_str());
	}
	getchar();
	return 0;
}

git上有源码和测试环境介绍: https://github.com/lzyinformation/VersionCompare.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值