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

C++ 如何从文件系统打印特定名称文件,c++,windows,winapi,C++,Windows,Winapi,所以我可以打印文件夹中的所有文件,但我想打印我想要的文件。我的意思是,我将输入例如Mineract,如果我在文件夹中有,例如minecraft_服务器,Mineract launcher。它会打印所有的名字和Minecraft在他们的名字,所以它会打印Minecraft服务器和Minecraft发射器 我试着把它放在一个for循环中。但是我不能做路径的位置,这是不可能的 for (const auto& entry : fs::directory_iterator(path)) {

所以我可以打印文件夹中的所有文件,但我想打印我想要的文件。我的意思是,我将输入例如Mineract,如果我在文件夹中有,例如minecraft_服务器,Mineract launcher。它会打印所有的名字和Minecraft在他们的名字,所以它会打印Minecraft服务器和Minecraft发射器

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

for (const auto& entry : fs::directory_iterator(path))
{
    cout << entry.path() << endl;
}
for(const auto&entry:fs::directory\u迭代器(path))
{

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

下面的(在我的脑海中)会起作用

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

也许你需要预先写一个/

我不确定我是否理解你的问题。使用类似于
entry.path().string()
(或
entry.path().filename().string()
)的方法,然后使用
std::string
(例如
substr
开头或
结尾)看看它是否与你要找的某个(特定的)名字相匹配。@Christian.K你是对的一个家伙给了我一个非常好的答案,但似乎不起作用。他使用了你所分割的,我当然会像他那样做你拼写的“Minecraft”这里有三种不同的方式。请仔细阅读你的文章,准确地写下你想做什么,以避免得到不适用的答案。非常确定你理解正确,但它不起作用。如果我这样做,它甚至不会打印任何内容。例如,如果我使用库解析json,代码假设所有js关于字段存在。使用Visual Studio 2019编译。请随意做一个添加该库的PR;-)我不明白为什么您所做的第一个代码是错误的,尽管我只想搜索用户输入的minecraft是否会在名为“minecraft”的文件夹中找到所有文件用户的输入在哪里?我应该用什么替换它?什么是“测试文件”和“输出文件”这段代码使用一个名为ParserConfig.json的json文件作为其导入,这段代码对您来说太过分了,但我认为您可以删掉您需要的代码片段,主要是从
forEveryFileInOrder
函数中删掉。另外,请看一下我编辑的答案,因为它可能会为您提供确切的解决方案。
#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
}
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);
                }
std::string path = std::cin;
for (auto& file : fs::recursive_directory_iterator(path)) 
    {
           do your stuff
    }