c++ - 使用 boost 文件系统对文件进行排序

标签 c++ sorting boost

这是我的问题:我得到了一堆文件,这些文件的名称类似于“_X1.bla.txt”、“_X101.bla.txt”、_X47.bla.txt,我用 boost::filesystem 读入这些文件,添加到 std::vector 。

正如您从示例中看到的,名称不以数字开头。在这个例子中,结果应该是 1、47、101。如果你告诉我如何从文件中提取数字,我应该能够自己对文件进行自动排序。

最佳 胡岛

最佳答案

如果容器中有所有名称(类似于 std::vector 文件名),您可以这样做

std::sort(filenames.begin(),filenames.end()) 

并且会使用默认的排序功能。如果你想要一个自定义的,你可以这样做:

struct sort_functor
{
    bool operator ()(const std::string & a,const std::string & b)
    {
        return a < b;// or some custom code
    }
};
void test()
{
    std::vector<std::string> filenames;
    std::sort(filenames.begin(),filenames.end(),sort_functor());
}

关于c++ - 使用 boost 文件系统对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18723984/

相关文章:

c++ - boost::spirit::qi 差异解析器行为

c++ - 字符串格式替换为 snprintf 中字符中的值

c++ - 如何更改字符的值?

matlab - 在matlab中排序并分配排名

java - 使用java中的比较器对二维数组的每一列进行排序

c# - 使用临时变量对分数的多维数组进行排序

c++ - 检测 `boost::math::tools::brent_find_minima()` 的错误输入

c++ - 如何使用 Boost Graph Library 获取边缘的端口标识符?

c++ - CPPRest SDK 向服务器发出 HTTP 请求

c++ - 在文件夹中添加或删除文件时发出通知的 API