Я виновен в использовании следующего фрагмента кода с использованием boost-filesystem и boost-regexp для получения абсолютного пути + имен файлов из каталога, введенного в качестве аргумента.
Где input_dir
- это переменная, содержащая аргумент из командной строки, обозначающий имя каталога, который необходимо пройти,
string dir_abs_name = "./" + input_dir;
string file_abs_name;
path current_dir(dir_abs_name);
boost::regex pattern("m.*"); // list all files starting with m
for (directory_iterator iter(current_dir),end; iter!=end; ++iter) {
string name = iter->path().leaf();
if (regex_match(name, pattern)) {
file_abs_name = dir_abs_name + name;
input_file = str_to_char(file_abs_name); // my own function that converts string to char* (needed that for another method later on in the code)
std::cout << "--> considering file " << input_file << "... \n";
}
}
Теперь я столкнулся с проблемой, что список не в алфавитном порядке. Я получаю случайные совпадения, а не в определенном порядке. Есть ли способ применить этот алфавитный порядок?
Спасибо.
РЕДАКТИРОВАТЬ: Стоит отметить, что в программе я иногда работаю только над подмножеством всего списка файлов в каталоге. Я делаю это, когда передаю аргумент, чтобы сделать выбор, скажем, только 4 файла из 1000 в каталоге. Их можно отсортировать после получения списка ... но поиск по-прежнему остается случайным.