c++实现一个比较两个string类型的版本号的小demo
在软件实现更新模块的时候,有可能会判断一下服务器上的版本的版本号和本地版本的版本号。
下面有类似这样形式的版本号:string str = "0.0.0.1";
分析一下可以看出,该版本号可以分为4个部分,下面就实现一个提取这4部分的功能函数:
1 //通过string 参数获取版本号到version数组内 2 //该函数是通过"."来分别获取4个整形值的 3 //所以允许出现类似: "1000.20.3.5" 4 5 void GetVersion(string str,int *version) 6 { 7 string st1(""); 8 int j = 0; 9 for (int i = 0;i< str.size();i++) 10 { 11 if (str[i] == '.') 12 { 13 version[j++] = atoi(st1.c_str()); 14 st1 = ""; 15 }else 16 { 17 st1 += str[i]; 18 } 19 } 20 version[j++] = atoi(st1.c_str()); 21 } 22 23 ////////////////////////////////////////////////////////////////////// 24 25 string strServerListVersion = "0.0.0.2 ";//服务器版本的版本号 26 string strLocVersion = " 0.0.0.1";//本地版本的版本号 27 int serverVersion[4] = {0}; 28 int locVersion[4] = {0}; 29 30 31 GetVersion(strServerListVersion ,serverVersion); 32 33 GetVersion(strLocVersion ,locVersion); 34 35 36 //比较两个版本 37 int k = memcmp(locVersion,serverVersion,4); 38 if (k == 0) 39 { 40 //版本相等 41 42 }else if (k < 0) 43 { 44 //服务器版本高 45 46 47 }else 48 { 49 //服务器版本低 50 }
功能不复杂,有用到类似版本号比较判断的,就可以直接拿走就可以用。
之所以把获取的4个表示版本的值放在数组内,是为了更进一步的开发,比如升降版本:从1.5一下子降到1.0
这时候就可以实现逻辑:通过数组获取版本差值,然后先从版本1.5降到1.4然后1.3然后1.2然后1.1最后才能到1.0
而不是直接就从1.5一下子将到1.0
一般更新升级的话都会调用 libbz2 使用patch的形式进行增量差分升级的,这里就不啰嗦了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了