c++实现一个比较两个string类型的版本号的小demo
来源:互联网 发布:c语言标准库函数源码 编辑:程序博客网 时间:2024/05/17 23:56
在软件实现更新模块的时候,有可能会判断一下服务器上的版本的版本号和本地版本的版本号。
下面有类似这样形式的版本号: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 }else16 {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 }else48 {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
- c++实现一个比较两个string类型的版本号的小demo
- 一个ahk小函数, 实现版本号的比较
- String类型版本号比较
- string 类型的两个变量怎么比较
- 比较两个类型为String的字符串
- Scala 实现两个类型比较的实现
- Long类型比较的一个小问题
- php 比较任意两个版本号的大小
- 关于string类型的一个小技巧
- 版本号比较的python实现
- PHP实现的版本号比较
- viewpager+fragment实现的一个小Demo
- String类型的比较
- js比较两个版本号的大小(比较简洁)
- 比较C++的string类型与C-串的输入输出
- C++ string和c类型字符数组的比较
- 一种版本号比较函数的c++实现
- String 类型的数据比较:
- MFC-Dialog各函数的执行顺序
- Linux下类似windows下_beginthread和_endthread 的多线程开发
- SAP系统参数设置
- linux c++下载http文件并显示进度<转>
- 言必信,行必果,硁硁然小人哉!
- c++实现一个比较两个string类型的版本号的小demo
- Android 解压zip文件(支持中文)
- Eclipse 工程使用相对路径导入Jar包设置
- android中配置文件property的用途以及使用<转>
- PocketSphinx语音识别系统的编程
- NDK开发中的一个HTTP下载实例附带下载进度
- OpenSL ES 查询设备支持的SL Profiles
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- 下载google code中源码的几个工具