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

Scan directory and subdirectories for .txt files

本文关键字:txt 文件 子目录 扫描      更新时间:2023-10-16

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

我设法获得了目录中那些.txt文件的路径,但我无法进一步访问子目录。有命令吗?在Python中,我使用了:

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

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

感谢

对于支持filesystem技术规范(现已被C++17接受)的编译器,可以按如下方式执行:

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