2015-09-03 133 views
0

我正在寫一個VC++程序,查找系統中所有已安裝的Java版本(如具有Java 1.7,1.8等的單個系統)。我想比較版本並以降序(或升序)顯示它們。
例如,它應該打印:
版本:1.8.0_60是最高版本。
版本:1.7.0_80是第二高版本。


。我的代碼列出了安裝的JRE的不同版本。那沒問題。但正如你可能已經猜到的那樣,我不知道如何比較返回的版本,找到哪個版本是最高版本,哪個版本是第二高版本等。將它們轉換爲整數或浮點數並進行比較不會顯而易見,因爲列出的版本也具有「 _'(下劃線)字符出現在它們中。所以,我的猜測是我將不得不按照原樣比較它們,並按升序或降序對它們進行排序。我如何比較這些TCHAR值並對它們進行排序?如何比較不同版本的已安裝java並打印最高版本?

+0

請接受答案,並參閱http://stackoverflow.com/tour。 – LogicStuff

回答

0

你可以把你的版本字符串INT四部分組成的數字一樣,值:

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位在排序時易於比較的值。

相關問題