扫描目录及其子目录中的 .txt 文件

4
我有一个任务,需要我获取一个字符串和一个目录路径,然后打开该目录及其所有子目录中的每个 .txt 文件,并打印出包含该字符串的所有 .txt 文件。
我已经成功获取了目录中 .txt 文件的路径,但是我无法进一步访问子目录。 是否有任何命令可以实现此功能?在 Python 中我使用了以下命令:
for path, dirs, files in os.walk(dirPath):
        for f in files:
            if f.endswith('.txt'):

但我在C++中找不到类似的命令。谢谢。

1
std::filesystem 只是 C++1z 的一个建议,因此在它成为标准之前,请指定您正在使用的平台。 - myaut
1
或者安装并配置Boost以获取boost::filesystem。指定平台可能更容易满足@myaut的要求。 - user4581301
2
不完全是重复:https://dev59.com/mnRB5IYBdhLWcg3weHLx。列出大多数平台上的目录都在一个答案或另一个答案中涵盖了。从那里,您应该能够轻松过滤掉txt文件。 - user4581301
GCC现在已经有了filesystem(5.3.1)。 - Galik
1个回答

2

如果编译器支持已被纳入C++17的filesystem技术规范,则可以按照以下方式进行操作:

#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';
    }
}

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