【问题标题】:C++: Get and list all the files from directory that user writesC ++:从用户写入的目录中获取并列出所有文件
【发布时间】:2021-10-17 12:50:33
【问题描述】:

我是新来的。我正在开发一个用于二进制打包文件的小程序,但我不知道如何创建一个函数来读取和列出用户写入的文件夹中具有不同名称和扩展名的所有文件。

string folder;
cout << "Input folder name: ";
getline (cin, folder);

因此,在该命令之后,函数假设使用“文件夹”和当前目录位置来查找该文件夹并读取并列出其中的所有文件。

感谢您的时间和帮助。

【问题讨论】:

    标签: c++ list file directory get


    【解决方案1】:

    我会使用std::filesystem::directory_iterator 浏览给定目录中的所有文件。

    #include <iostream>
    #include <filesystem>
    
    int main()
    {
        const std::filesystem::path path{ "C:\\temp" };
        for (auto const& dir_entry : std::filesystem::directory_iterator{ path })
            std::cout << dir_entry << '\n';
    }
    

    要仅获取文件名(不包括路径),请使用:

        std::cout << dir_entry.path().filename() << '\n';
    

    【讨论】:

    • 这是一个很好的评论;不是很好的答案。
    • 我试过了,但得到了很多错误:错误:命名空间“std”中的“文件系统”没有命名类型 - 错误:“std::filesystem”尚未声明 - 错误:预期的“) ' 在 '{' 标记之前 - 错误:'path' 未在此范围内声明 - 错误:在 ')' 标记之前预期的主表达式。我使用 Codeblocks 20.03
    • -std=c++17 需要在您的编译命令中。
    • 没关系。这是mingw中的一个错误。我安装了 MSYS2,现在它可以工作了。谢谢。
    • @YukiXXL 很高兴它成功了。如果有帮助,您会接受答案吗?
    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多