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的形式进行增量差分升级的,这里就不啰嗦了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值