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

C++ 扫描目录和子目录中的.txt文件,c++,C++,我有一个任务,在这个任务中,我得到一个字符串和一个目录的路径,我必须打开该目录和所有子目录中的每个.txt文件,并打印我能在其中找到该字符串的所有.txt文件 我设法找到了目录中那些.txt文件的路径,但我无法进一步找到子目录。 有什么命令可以这样做吗?在Python中,我使用了: for path, dirs, files in os.walk(dirPath): for f in files: if f.endswith('.txt'): 但是我不能

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

我设法找到了目录中那些.txt文件的路径,但我无法进一步找到子目录。 有什么命令可以这样做吗?在Python中,我使用了:

for path, dirs, files in os.walk(dirPath):
        for f in files:
            if f.endswith('.txt'):
<>但是我不能在C++中找到类似的命令。p>
感谢编译器支持
文件系统
,该文件系统现已被
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';
    }
}
#包括
#包括
#包括//稍后(C++17)仅
命名空间fs=std::实验::文件系统;
int main(int,字符**argv)
{
std::string dir=“.”;
if(argv[1])
dir=argv[1];
for(auto&item:fs::recursive_directory_iterator(dir))
{
如果(!fs::是常规文件(item.path())
||item.path().extension()!=“.txt”)
继续;
//在此处打开文本文件

std::cout
std::filesystem
只是C++1z的一个建议,因此在2017年之前,请指定您正在使用的平台,或者安装并配置Boost以获取。可能更容易满足@myaut的请求并指定平台。不完全重复:。在一个或另一个答案中介绍了最常见平台上的目录。Fr在那里,您应该能够轻松地过滤出txt文件。
GCC
拥有
filesystem
now
(5.3.1)