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

时间:2019-07-18 11:16:51

标签: c++ windows winapi

因此,我可以打印文件夹中的所有文件,但我想打印所需的文件。我的意思是,如果我在文件夹中输入例如Mineract,例如minecraft_server,mineract launcher,则将输入该名称。它将在名称中打印所有带有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;
                }
            }

1 个答案:

答案 0 :(得分:2)

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

以下(在我头顶上)会起作用

qDebug() << "created" << (qintptr)menu;
connect(menu, &QMenu::destroyed, 
        this, [menu]() { qDebug() << "deleted" << (qintptr)menu; });

该示例直接来自我连续使用了8周的代码,但对我而言从未失败:

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

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

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

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);
                }

也许您需要加一个/