如何在c ++中对可能没有填充数字的文件名进行排序?

时间:2010-01-09 13:23:48

标签: c++ sorting filenames

我需要对可以拥有共同根目录的文件名进行排序,然后按照不一致填充的数字进行排序;一个示例是在Windows中重命名多个文件时获得的内容。

filenamea(1).txt filenamea(2).txt ... filenamea(10).txt ... filenamea(100).txt ... filenameb.txt ... filenamec(1).txt filenamec(2).txt

依旧......

2 个答案:

答案 0 :(得分:5)

已经有类似的问题,我知道Sort on a string that may contain a numberHow to implement a natural sort algorithm in C。所以你也可以在那里寻找更多的灵感和帮助。

这两个问题的答案都表明http://www.davekoelle.com/alphanum.html,这基本上就是Pascal Cuoq所建议的。

您还可以查看Coding Horror文章,其中包含其他一些算法:Sorting for Humans : Natural Sort Order

答案 1 :(得分:1)

一种解决方案是从字典顺序的角度将数字(连续的数字序列)视为单个字母。

然后“filenamea(3).txt”,“filenamea(20).txt”和“filenamea(100).txt”都有相同的长度,最后按此顺序排序,我明白是什么你想要(?)