c++判断是否为目录的示例分享


在C++中,判断一个路径是否为目录通常需要使用操作系统提供的API,因为C++标准库本身并不直接提供这样的功能。以下是一个使用POSIX(在类Unix系统如Linux和macOS上)和Windows API的示例,分别展示了如何判断一个路径是否为目录。

### 对于POSIX系统(Linux/macOS)

你可以使用`stat`函数来获取文件的状态,然后检查其是否为目录。


#include <sys/stat.h>
#include <iostream>

bool isDirectory(const char* path) {
    struct stat path_stat;
    if (stat(path, &path_stat) == -1) {
        // 错误处理
        std::cerr << "Error accessing " << path << std::endl;
        return false;
    }
    return S_ISDIR(path_stat.st_mode);
}

int main() {
    const char* path = "/path/to/directory";
    if (isDirectory(path)) {
        std::cout << path << " is a directory." << std::endl;
    } else {
        std::cout << path << " is not a directory." << std::endl;
    }
    return 0;
}

### 对于Windows系统

在Windows上,你可以使用`GetFileAttributes`函数。


#include <windows.h>
#include <iostream>

bool isDirectory(const char* path) {
    DWORD fileAttr = GetFileAttributesA(path);
    return (fileAttr != INVALID_FILE_ATTRIBUTES && 
            (fileAttr & FILE_ATTRIBUTE_DIRECTORY));
}

int main() {
    const char* path = "C:\\path\\to\\directory";
    if (isDirectory(path)) {
        std::cout << path << " is a directory." << std::endl;
    } else {
        std::cout << path << " is not a directory." << std::endl;
    }
    return 0;
}

注意:这两个示例分别针对POSIX和Windows系统,你需要根据你的操作系统环境选择适合的示例。同时,这些示例代码没有包括所有可能的错误处理情况,例如权限不足等,你可能需要根据具体需求进行扩展。