在目录中查找特定的文件类型(C ++)

时间:2014-11-11 09:08:42

标签: c++ file search directory

我想制作一个程序,可以搜索计算机上的特定文件夹来查找某些文件。在这种情况下,我希望它寻找文本文件。我听说有些消息来源声称可以使用标准C ++库来完成。如果是这样,我该怎么做呢?我相信工作代码应该是这样的:

string path = "C:\\MyFolder\\";

while(/*Searching through the directory*/)
{
    if (/*File name ends with .txt*/)
    {
        /*Do something*/
    }
}

1 个答案:

答案 0 :(得分:1)

不支持使用标准库中的目录。然而,努力将Boost.Filesystem纳入C ++ 17标准。目前,您可以直接使用Boost

#include <iostream>

#include <boost/filesystem.hpp>
#include <boost/algorithm/string/predicate.hpp>

int main(int argc, char* argv[])
{
  namespace fs = boost::filesystem;
  namespace ba = boost::algorithm;

  fs::path dir_path(".");

  for (const auto& entry : fs::directory_iterator(dir_path)) {
    if (fs::is_regular_file(entry)) {
      std::string path = entry.path().string();
      if (ba::ends_with(path, ".txt")) {
        // Do something with entry or just print the path
        std::cout << path << std::endl;
      }
    }
  }
}

<强>更新

要编译代码段,您需要安装Boost(并且已编译,Filesystem不是仅限标头)。按照教程here进行操作。然后确保链接到boost_filesystem

g++ -std=c++11 -Wall test.cc -lboost_filesystem && ./a.out

并且不要忘记在同一目录中创建一些.txt文件,以便程序可以咀嚼。