【发布时间】:2011-07-13 14:23:06
【问题描述】:
我使用以下代码 sn-p 使用 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";
}
}
现在我面临的问题是列表不是按字母顺序排列的。我得到随机匹配,而不是按任何特定顺序。有没有办法强制执行该字母顺序?
谢谢。
编辑:值得一提的是,在程序中,我有时只处理目录中整个文件列表的一个子集。当我传递一个参数以进行选择时,我会这样做,假设目录中的 1000 个文件中只有 4 个文件。可以在检索列表后对它们进行排序..但检索仍然是随机的。
【问题讨论】:
标签: c++ regex sorting boost filesystems