Естественная сортировка имен файлов каталогов в C++

У меня есть список каталогов, для которого я хочу получить имена файлов и поместить их в вектор строки таким образом, чтобы они были отсортированы "естественным" образом. например { "10.txt" "0.txt" "2.txt" "1.m" "12 января" "13 июля.txt" "25 ноября.txt" "Джейн" "Джон" }должно быть {"0.txt" "1.m" "2.txt" "10.txt" "12 января" "13 июля.txt" "25 ноября.txt" "Джейн" "Джон" }. Как это сделать проще всего?

Разрабатывая понятие «натуральный», мы предполагаем, что строка состоит из частей чисел (N)и текста (T), такая что ...(N) (T)... , то для ...(N1)(T1)... и ...(N2)(T2)... будет быть (N1, где (<)подразумевает приоритет левого термина над правым. В этом случае числа имеют приоритет над текстовыми полями, если они находятся в той же позиции в строке, то есть 1.z (<) 1_t.txt.

Существуют ли уже библиотечные функции для такой сортировки буквенно-цифровых строк или элементов каталога?

ЖЕЛАЕМЫЙ порядок, в котором файлы должны прийти. Имена файлов будут храниться в векторе строк.

Abhinav@Abhinav-PC /cygdrive/c/AbhinavSamples/shell
$ ls -lv
total 8
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:51 1.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:55 1_t.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:50 3.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:51 4.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:53 10.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:56 10_t.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:56 13.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:53 20.txt

**Simple Sort**
Abhi@Abhi-PC /cygdrive/c/AbhinavSamples/shell
$ ls -l
total 8
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:51 1.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:53 10.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:56 10_t.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:56 13.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:55 1_t.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:53 20.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:50 3.txt
-rw-r--r--+ 1 Abhinav None 2 Mar 17 00:51 4.txt
7
задан aschepler 21 March 2012 в 23:57
поделиться