扫描.txt文件的目录和子目录

时间:2016-05-12 21:37:27

标签: c++

我有一个任务,我得到一个字符串和一个目录的路径,我必须打开该目录和所有子目录中的每个.txt文件,并打印我可以找到该字符串的所有.txt文件。 / p>

我设法获取目录中那些.txt文件的路径,但我无法进一步查看子目录。 有没有命令这样做?在Python中我用过:

for path, dirs, files in os.walk(dirPath):
        for f in files:
            if f.endswith('.txt'):

但我在c ++中找不到这样的命令。

由于

1 个答案:

答案 0 :(得分:2)

对于支持现已被filesystem接受的C++17 Technical Specification的编译器,可以按以下方式完成:

#include <string>
#include <iostream>
#include <experimental/filesystem> // Later (C++17) just <filesystem>

namespace fs = std::experimental::filesystem;

int main(int, char** argv)
{
    std::string dir = ".";

    if(argv[1])
        dir = argv[1];

    for(auto& item: fs::recursive_directory_iterator(dir))
    {
        if(!fs::is_regular_file(item.path())
        || item.path().extension() != ".txt")
            continue;

        // open text file here
        std::cout << "Found text file: " << item.path().string() << '\n';
    }
}