c++如何获取目录下的文件数量(不包括子文件夹)_iterator计数【实战】
最直接可靠的方法是使用 std::filesystem::directory_iteratorC17 起它仅遍历当前目录一层、自动跳过 . 和 ..配合 is_regular_file() 可精准统计普通文件数且跨平台、无需手动处理路径细节或系统 API 差异。用 std::filesystem::directory_iterator 遍历并计数最直接可靠标准库 std::filesystemC17 起是跨平台获取目录下文件数量的首选directory_iterator 默认只遍历当前目录一层不递归进入子目录完全符合“不包括子文件夹”的要求。关键点它跳过 . 和 ..且对每个 entry 自动做 is_regular_file() 判断如果你只想要普通文件但注意符号链接、设备文件等也可能被计入需按需过滤。实操建议确保编译器支持 C17如 GCC 8、Clang 7、MSVC 2017 Update 3并启用 -stdc17包含头文件#include filesystem/filesystem命名空间为 std::filesystem或加 using namespace std::filesystem;路径传入前建议先用 exists() 和 is_directory() 校验避免迭代非法路径抛出 filesystem_error不要用 std::distance(it, end) 直接算距离——directory_iterator 是输入迭代器不支持减法运算会编译失败int count_files_in_dir(const std::string path) { if (!exists(path) || !is_directory(path)) return 0; int count 0; for (const auto entry : directory_iterator(path)) { if (entry.is_regular_file()) count; } return count;}为什么不用 std::filesystem::recursive_directory_iterator名字带 recursive_ 就说明它会钻进所有子目录即使你只调用一次 it 或只循环第一层底层行为仍是递归构造的——它会在首次解引用时预加载整个树结构取决于实现不仅慢而且结果包含子目录里的所有文件完全违背需求。立即学习“C免费学习笔记深入”常见错误现象 Vozo Vozo是一款强大的AI视频编辑工具可以帮助用户轻松重写、配音和编辑视频。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2557171.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!