【问题标题】:C++ How to put the names of files within a directory into a vector? [duplicate]C ++如何将目录中的文件名放入向量中? [复制]
【发布时间】:2013-12-03 08:33:37
【问题描述】:

我只需要将目录中的所有文件(或文件名?)放入一个向量中,以便我可以对它们进行排序并按顺序打开它们。

自从我第一次接触 C++ 以来,我真的不知道该怎么做。我试过 boost::filesystem 但我没有成功,因为这对我来说很陌生。请帮忙!

我实际上找到了一种我认为可行的方法,但是我现在正在努力向命令行添加链接器,但我认为如果我在这里问这个问题,它将超出原始问题的范围。

【问题讨论】:

标签: c++ boost vector


【解决方案1】:
namespace fs = boost::filesystem;
fs::directory_iterator b("path of directory"), e;
std::vector<fs::path> paths(b, e);

这包括子目录(但不包括它们的内容)。如果要排除子目录,可以在路径上使用fs::is_directory 来检查它是否是目录。如果要包含子目录的内容,则可以使用recursive_directory_iterator 而不是directory_iterator

【讨论】:

  • 使用 c++17,您不再需要 boost 并使用 std::filesystem
【解决方案2】:

取自您的previous question:

std::vector<std::string> filenames;
dpdf = opendir("/data/files");
if (dpdf != NULL) {
   while (epdf = readdir(dpdf)) {
      filenames.push_back(std::string(epdf->d_name));
   }
}

【讨论】:

  • 耶!!非常感谢!!
猜你喜欢
  • 1970-01-01
  • 2013-04-29
  • 2017-08-10
  • 1970-01-01
  • 2015-05-02
  • 2020-12-28
  • 2018-04-14
  • 2017-07-07
  • 1970-01-01
相关资源
最近更新 更多