C++按升序打印文件名

3
我正在使用以下代码来遍历目录中的文件。该目录中的所有文件都带有唯一编号。
下面的代码成功地打印出了目录中的所有文件,但是没有按照升序排列。它以完全随机的方式输出,并且一个文件会被重复输出。
我找不到另一种打印文件或按升序打印文件的方法。我真的需要按升序打印它们,然后在之后按升序打开它们。任何帮助将不胜感激。 DIR *dpdf; struct dirent *epdf;
dpdf = opendir("/data/files");
if (dpdf != NULL){
   while (epdf = readdir(dpdf)){
      printf("%s\n",epdf->d_name);
         // std::out << epdf->d_name << std::endl;
   }
}
1个回答

7

读取文件名时将它们放入一个向量中。

当你读完所有文件后,使用 std::sort 来对数组进行排序。

然后根据需要处理已排序的文件名。


1
请确保在 std::vector::emplace_back 抛出异常时,使用 std::unique_ptr::closedir 防止内存泄漏。 - user1804599
太棒了,我会试一下。 - Ree

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接