readdir 是一个在 Unix 和类 Unix 系统(如 Linux)上用于读取目录内容的函数。它的原型在 <dirent.h> 头文件中定义。然而,readdir 函数并不是跨平台的,因为它主要存在于 POSIX 标准中,而并非所有操作系统都遵循这个标准。
对于跨平台的目录读取功能,你可以考虑使用 C++17 中引入的 <filesystem> 库。这个库提供了一个跨平台的文件系统操作接口,包括读取目录内容的功能。以下是一个简单的示例,展示了如何使用 <filesystem> 库来读取目录内容:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
std::string path = "your_directory_path_here";
if (fs::exists(path) && fs::is_directory(path)) {
for (const auto& entry : fs::directory_iterator(path)) {
std::cout << entry.path() << std::endl;
}
} else {
std::cerr << "The specified path does not exist or is not a directory." << std::endl;
}
return 0;
}
请注意,要使用 <filesystem> 库,你需要确保你的编译器支持 C++17,并在编译时启用 C++17 标准。例如,如果你使用的是 g++ 编译器,可以使用以下命令进行编译:
g++ -std=c++17 your_code.cpp -o your_program
总之,虽然 readdir 在 Unix 和类 Unix 系统上广泛可用,但它不是跨平台的。为了实现跨平台的目录读取功能,建议使用 C++17 的 <filesystem> 库。