最近做了个更新程序,更新下配置文件后通过对比版本号大小来确定是否有更新。原来仅仅只是简单的比较字符串的大小,用_tcscmp来做的,但是在形如:2.2.12.6和2.2.9.6对比时,明显会不对。于是就用C++写了一二个简单的版本号转化、对比的类。
代码如下:
#pragma once
#include <string>
using std::wstring;
class CVersion
{
public:
CVersion()
:m_nMajorNumber(0)
,m_nMinorNumber(0)
,m_nRevisionNumber(0)
,m_nBuildNumber(0)
{
}
CVersion(const wstring& strVersion)
:m_nMajorNumber(0)
,m_nMinorNumber(0)
,m_nRevisionNumber(0)
,m_nBuildNumber(0)
{
GetVersion(strVersion);
}
virtual ~CVersion()
{
}
bool IsDigitString(const wstring& strValue)
{
if ( strValue.empty() )
return false;
for ( size_t i=0; i<strValue.size(); ++i )
{
if ( !iswdigit(strValue[i]) )
return false;
}
return true;
}
bool GetVersion(const wstring& strVersion)
{
int nBegin=0, nPos &#