在 Ubuntu(Linux)环境下,opendir 是可以用于 C++ 的,因为它本质上是 POSIX 标准库函数,在 C 和 C++ 中都可以直接使用。
opendir 是 POSIX 文件系统 API 的一部分,声明在:
#include <dirent.h>
它用于打开一个目录,返回一个 DIR* 指针,通常和以下函数配合使用:
opendir():打开目录readdir():读取目录项closedir():关闭目录#include <iostream>
#include <dirent.h>
int main() {
DIR* dir = opendir(".");
if (!dir) {
perror("opendir");
return 1;
}
struct dirent* entry;
while ((entry = readdir(dir)) != nullptr) {
std::cout << entry->d_name << std::endl;
}
closedir(dir);
return 0;
}
g++ main.cpp -o listdir
./listdir
opendir 是 C 风格 APINULL)closedir)如果你是写 C++17 及以上,更推荐使用:
#include <filesystem>
namespace fs = std::filesystem;
for (const auto& entry : fs::directory_iterator(".")) {
std::cout << entry.path() << std::endl;
}
✅ 类型安全
✅ 异常友好
✅ 跨平台(Windows / Linux)
| 方式 | 是否可用 | 建议 |
|---|---|---|
opendir |
✅ Ubuntu C++ 可用 | 系统级 / 旧代码 |
std::filesystem |
✅ C++17+ | ✅ 推荐 |
如果你是用于 嵌入式 / 系统编程 / 兼容老代码,opendir 完全没问题。
如果你写的是 现代 C++ 应用,建议直接用 std::filesystem。
需要我帮你对比性能或写递归遍历目录的例子吗?