我需要對可以具有公共根的文件名進行排序,但後面跟着不一定被統一填充的數字;一個示例是您在Windows中重命名多個文件時獲得的內容。如何在C++中對可能未填充數字的文件名進行排序?
filenamea(1)名爲.txt filenamea(2)的.txt ... filenamea(10).txt文件 ... filenamea(100).txt文件 ... filenameb.txt .. 。 filenamec(1)名爲.txt filenamec(2).txt文件
等等...
我需要對可以具有公共根的文件名進行排序,但後面跟着不一定被統一填充的數字;一個示例是您在Windows中重命名多個文件時獲得的內容。如何在C++中對可能未填充數字的文件名進行排序?
filenamea(1)名爲.txt filenamea(2)的.txt ... filenamea(10).txt文件 ... filenamea(100).txt文件 ... filenameb.txt .. 。 filenamec(1)名爲.txt filenamec(2).txt文件
等等...
已經有類似的問題,我知道Sort on a string that may contain a number和How to implement a natural sort algorithm in C。所以你也可以在那裏尋找更多的靈感和幫助。
這兩個問題的答案建議,http://www.davekoelle.com/alphanum.html,這基本上是Pascal Cuoq建議的。
您還可以在編碼恐怖的文章,其中一些其他算法鏈接:Sorting for Humans : Natural Sort Order
一個解決方案是從視圖的點處理的數字(數字連續序列)作爲單個字母字典順序。
然後,「filenamea(3).txt」,「filenamea(20).txt」和「filenamea(100).txt」的長度都是一樣的,最後按照這個順序排序,你想要什麼(?)
+1 AlphaNum工程請客,我(http://www.davekoelle.com/alphanum.html) – 2010-01-09 13:38:38
感謝指針。我確信它有一個名字(我認爲這是10年前我注意到的這些Mac OS)。 – 2010-01-09 13:39:30
這個算法甚至比OP想要的更好,因爲它處理字符串中的數字以及:) – 2010-01-09 15:28:11