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

来源:互联网 发布:大数据平台是什么 编辑:程序博客网 时间:2024/06/16 20:18

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();elselenf = 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
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 今期出什么生肖 www949494 今天出什么生肖 今晚出什么生肖 今晚看什么 今晚出了什么码 网店交易 电脑网页打不开 有网络但是网页打不开 电脑打不开网页 网页打不开 浏览器打不开网页 能上qq打不开网页 打不开网页 电脑网页打不开怎么回事 网络正常但网页打不开网页 qq能上网页打不开 qq上网页打不开 电脑网页打不开但是可以上网 网页打不开qq能上 电脑有网但是网页打不开 电脑浏览器打不开网页 电脑有网络为什么网页打不开 电脑网络正常但是网页打不开 电脑能上qq打不开网页 网络正常但打不开网页 为什么浏览器打不开网页 电脑一切正常就是打不开网页 垃圾开190张罚单 辅警可以开罚单吗 城管开的罚单不交会怎样 交警拍照没开罚单算违章吗 交警开罚单有提成吗 交警现场开的罚单网上查不到 交警开一万元罚单赔偿120万 瑞香一年开几次花 开美瑞 长春经开股票 股票开户网上能开吗 股票开户哪里开 股票开板是什么意思