BOOL ParseVersion(LPCTSTR pszVersion, int& nHMVer, int& nLMVer, int& nHLVer, int& nLLVer)
{
#define CHAR_NULL '\0'
CString strHMVer, strLMVer, strHLVer, strLLVer;
AfxExtractSubString(strHMVer, pszVersion, 0, '_');
AfxExtractSubString(strLMVer, pszVersion, 1, '_');
AfxExtractSubString(strHLVer, pszVersion, 2, '_');
AfxExtractSubString(strLLVer, pszVersion, 3, '_');
if(strHMVer.IsEmpty())
{
return FALSE;
}
return TRUE;
}
在上面的这个函数中,int& nHMVer是传入的参数,&符号表示传进来的是一个地址(这样的参数在函数中修改它的值,函数外面的值也会跟着修改)
AfxExtractSubString的参数共有四部分: AfxExtractSubString(strHMVer, pszVersion, num, '.');
1. strHMVer 分割后输出的字符串
2. pszVersion 要分割的字符串
3. num 提取的子字符串的序号,从0开始。假如你想提取第3段,该参数就输入2
4. "_" 用于分割的字符,默认的是'\n'
nHMVer = (int)strtol((LPCTSTR)strHMVer, &endptr, 10);
表示将一个String类型的转为十进制的Long型,如果转失败的话endptr就不等于空(endptr="不能转的值"),
从endptr可以看出是哪一段转换失败。