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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM