readdir
是一个在 Unix 和类 Unix 系统(如 Linux)上用于读取目录内容的函数。它在 POSIX 标准中定义,因此在遵循 POSIX 标准的系统上具有良好的跨平台兼容性。然而,在非 POSIX 兼容的系统(如 Windows)上,readdir
可能不可用或需要使用其他替代方法。
在 Windows 上,可以使用以下方法之一来读取目录内容:
FindFirstFile
和 FindNextFile
函数。这些函数在 Windows API 中提供,可以在所有版本的 Windows 上使用。示例代码:
#include <windows.h>
#include <stdio.h>
int main() {
WIN32_FIND_DATA findFileData;
HANDLE hFind = FindFirstFile("C:\\example_directory\\*", &findFileData);
if (hFind == INVALID_HANDLE_VALUE) {
printf("Error: FindFirstFile failed\n");
return 1;
}
do {
printf("%s\n", findFileData.cFileName);
} while (FindNextFile(hFind, &findFileData) != 0);
FindClose(hFind);
return 0;
}
<filesystem>
库。这个库提供了一个跨平台的文件系统操作接口,包括读取目录内容的功能。示例代码:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
for (const auto& entry : fs::directory_iterator("C:\\example_directory")) {
std::cout << entry.path().filename() << std::endl;
}
return 0;
}
请注意,使用 <filesystem>
库可能需要链接到 C++17 标准库,并在编译时启用 C++17 支持(例如,使用 -std=c++17
编译选项)。
总之,虽然 readdir
在 Unix 和类 Unix 系统上具有良好的跨平台兼容性,但在 Windows 上可能需要使用其他方法。在 Windows 上,可以使用 FindFirstFile
和 FindNextFile
函数或 C++17 的 <filesystem>
库来读取目录内容。