如何从文件系统打印特定名称文件



所以我可以打印文件夹中的所有文件,但我想打印我想要的文件。我的意思是,我将输入例如Mineract,如果我在文件夹中,例如minecraft_server,mineract启动器。它会打印所有名称中包含Minecraft的名称,因此它将打印Minecraft服务器和Mineacraft Launcher

我试过把它放在一个 for 循环中。但我不能做路径的我位置,这是不可能的。

for (const auto& entry : fs::directory_iterator(path))
{
    cout << entry.path() << endl;
}

那只会打印所有文件。

更新的代码(仍然不起作用(。搜索 - 用户输入的内容

for (const auto& entry : fs::directory_iterator(path)) { 
if (entry.path().string().find(search) != string::npos) {
                    cout << entry.path().string() << endl;
                }
            }

如果我正确理解了我严重怀疑的问题,您希望遍历文件夹及其子文件夹,并且只对包含某个字符串的文件执行某些操作。

以下(在我的头顶上(将起作用

#include <experimental/filestream>
namespace fs = std::experimental::filestream
for (auto& file : fs::recursive_directory_iterator(yourPath)) 
{
   if(file.path().u8string().find(yourString) != std::string::npos)
       do your stuff
}

这个例子直接来自我连续使用了 8 周的代码,它从未在我身上失败过:

for (auto file : fs::recursive_directory_iterator("./"))
                {
                    //std::cout << file.path().u8string() << std::endl;
                    if (includedFiles.find(file.path().u8string()) != includedFiles.end()
                        || skipFile(config, files, &file)
                        || file.path().u8string().find((*config)["testFile"].get<std::string>()) != std::string::npos
                        || file.path().u8string().find((*config)["outputFile"].get<std::string>()) != std::string::npos
                        || matchRegex(&fileOrder, &file.path().u8string())) // Last one does ordering
                    {
                        //if (file.path().u8string().find("ValidateModel") != std::string::npos)
                        //{
                        //  std::cout << "skipped model string " << file.path().u8string() << std::endl;
                        //}
                        continue;
                    }
                    includedFiles[file.path().u8string()] = true;
                    std::cout << file.path().u8string() << std::endl;
                    functor(file);
                }

完整代码减去库可在 github 上找到:https://github.com/erikknaake/IseProjectSQLFileCombiner/blob/master/SQLFileCombiner.cpp

当您知道文件夹的名称时:

std::string path = std::cin;
for (auto& file : fs::recursive_directory_iterator(path)) 
    {
           do your stuff
    }

也许您需要在前面加上一个/