在软件实现更新模块的时候,有可能会判断一下服务器上的版本的版本号和本地版本的版本号。

下面有类似这样形式的版本号:string str = "0.0.0.1";

分析一下可以看出,该版本号可以分为4个部分,下面就实现一个提取这4部分的功能函数:

 //通过string 参数获取版本号到version数组内
//该函数是通过"."来分别获取4个整形值的
//所以允许出现类似: "1000.20.3.5" void GetVersion(string str,int *version)
{
string st1("");
int j = ;
for (int i = ;i< str.size();i++)
{
if (str[i] == '.')
{
version[j++] = atoi(st1.c_str());
st1 = "";
}else
{
st1 += str[i];
}
}
version[j++] = atoi(st1.c_str());
} ////////////////////////////////////////////////////////////////////// string strServerListVersion = "0.0.0.2 ";//服务器版本的版本号
string strLocVersion = " 0.0.0.1";//本地版本的版本号
int serverVersion[] = {};
int locVersion[] = {}; GetVersion(strServerListVersion ,serverVersion); GetVersion(strLocVersion ,locVersion); //比较两个版本
int k = memcmp(locVersion,serverVersion,);
if (k == )
{
//版本相等 }else if (k < )
{
//服务器版本高 }else
{
//服务器版本低
}

功能不复杂,有用到类似版本号比较判断的,就可以直接拿走就可以用。

之所以把获取的4个表示版本的值放在数组内,是为了更进一步的开发,比如升降版本:从1.5一下子降到1.0

这时候就可以实现逻辑:通过数组获取版本差值,然后先从版本1.5降到1.4然后1.3然后1.2然后1.1最后才能到1.0

而不是直接就从1.5一下子将到1.0

一般更新升级的话都会调用 libbz2 使用patch的形式进行增量差分升级的,这里就不啰嗦了。

c++实现一个比较两个string类型的版本号的小demo的更多相关文章

  1. 计算两个String 类型的时间相关几个月

    /** * 返回两个时间段相隔几个月 * @param date1 * @param date2 * @return * @throws ParseException * @throws ParseE ...

  2. mybatis传入两个String类型的参数

    1.项目spring +mybatis +oracle 2.报错信息: [DEBUG] -- :: org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debu ...

  3. Spring MVC控制层的返回类型--String类型与Bean类型

    SpringMVC控制层的返回类型形式多样,现拿其中的两种--String类型与Bean类型作以说明. 一.测试项目的结构 说明:(jsp的名字没起好) 控制层:UserController.java ...

  4. C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

    STL实践与分析 --再谈string类型(下) 四.string类型的查找操作 string类型提供了6种查找函数,每种函数以不同形式的find命名.这些操作所有返回string::size_typ ...

  5. Java String引起的常量池、String类型传参、“==”、“equals”、“hashCode”问题 细节分析

    在学习javase的过程中,总是会遇到关于String的各种细节问题,而这些问题往往会出现在Java攻城狮面试中,今天想写一篇随笔,简单记录下我的一些想法.话不多说,直接进入正题. 1.String常 ...

  6. String类型中 "=="和"equals"比较的差别

    String类型中 "=="和"equals"比较的差别 先说明一下String类型的变量的创建方式 在创建新的String类型的变量时,首先会在缓冲区查找是否 ...

  7. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  8. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  9. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

随机推荐

  1. 树莓派上搭建NAS

    首先可以参考看看  搭建家庭 NAS 服务器有什么好方案?下载做NAS的系统也比较多,如FreeNAS.Openfiler等免费系统,或购买其它收费NAS系统.根据自己的需要从硬件到软件的搭建过程.参 ...

  2. RAC8——scan ip的理解

    SCAN概念 先介绍一下什么叫SCAN,SCAN(Single Client Access Name)是Oracle从11g R2开始推出的,客户端可以通过SCAN特性负载均衡地连接到RAC数据库.S ...

  3. bzoj 4484 [Jsoi2015]最小表示——bitset

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4484 每个点上存一下它到每个点的连通性.用 bitset 的话空间就是 \( \frac{n ...

  4. webpack入门认知

    webpack 是什么? 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖 ...

  5. dubbo实战

    http://blog.csdn.net/hejingyuan6/article/details/47403299

  6. php设计模式之职责链模式

    <?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这 ...

  7. bzoj1825: [JSOI2010]蔬菜庆典

    Description Input Output 对于每组数据,输出一行.若蔬菜的总价能无限制增大,输出"+inf"(不含引号).否则输出一个整数,表示所有蔬菜的最大总价.   首 ...

  8. VMware仅主机模式访问外网

    原文转载至:https://blog.csdn.net/eussi/article/details/79054622 保证VMware Network Adapter VMnet1是启用状态  将可以 ...

  9. javascript 节点操作拷贝节点cloneNode()

    cloneNode(a)方法接受一个布尔值参数,表示是否深拷贝 true:表示执行深拷贝,复制本节点以及整个子节点树. false:浅拷贝.只复制节点本身. 复制后返回的节点副本属于文档所有,但是并没 ...

  10. javascript创建对象之构造函数模式(二)

    对上一章节的工厂模式进行代码重写 function Human(name, sex) { this.name = name; this.sex = sex; this.say = function ( ...