我有一个任务,我得到一个字符串和一个目录的路径,我必须打开该目录和所有子目录中的每个.txt文件,并打印我可以找到该字符串的所有.txt.
我设法获得目录中的那些.txt文件的路径,但我不能进一步到子目录.
有没有命令这样做?在Python中我用过:
for path, dirs, files in os.walk(dirPath):
for f in files:
if f.endswith('.txt'):
但我在c中找不到这样的命令.
谢谢
最佳答案 对于支持现已被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';
}
}