我正在编写一个VC ++程序,用于查找系统中所有已安装的java版本(例如,具有java 1.7,1.8等的单个系统)。我想比较版本并以降序(或升序)显示它们
例如,它应该打印:
版本:1.8.0_60是最高版本
版本:1.7.0_80是第二高版本
。
。
以该顺序。我的代码列出了已安装JRE的不同版本。没问题。但正如您可能已经猜到的那样,我不知道如何比较返回的版本并查找哪个版本最高,哪个版本是第二高等等。将它们转换为整数或浮点数并进行比较显然不会有效,因为列出的版本也有' _'(下划线)字符存在于其中。所以,我的猜测是我必须按原样对它们进行比较,然后按升序或降序对它们进行排序。如何比较这些TCHAR值并对它们进行排序?
答案 0 :(得分:0)
您可以将版本字符串转换为四部分数值,如下所示:
TCHAR* s1 = _T("1.8.0_60");
int i1, i2, i3, i4;
_stscanf_s(s1, _T("%d.%d.%d_%d"), &i1, &i2, &i3, &i4);
如果您假设这两个部分都不会超过255,您可以将它们组合成一个32位值,以便在排序时轻松进行比较。