Linux Dirent:获取目录中所有文件夹的列表

时间:2015-08-21 17:12:06

标签: c++ linux dirent.h

以下是我用来获取当前文件夹中所有文件夹列表的代码段。我希望得到红色的"。"和" .."列表中的文件夹,但不知何故不能。

const char* root_dir_c  = root_dir.c_str();
DIR *pdir               = opendir(root_dir_c);
struct dirent *entry    = readdir(pdir);

while (entry != NULL){
    if  ((entry->d_type == DT_DIR) && (entry->d_name != ".") && (entry->d_name != "..")){
        // DO STUFF
    }
    entry = readdir(pdir);
}
你能帮帮忙吗?

2 个答案:

答案 0 :(得分:1)

entry->d_namechar array,它与!=不起作用,您需要使用strcmp或类似内容。

答案 1 :(得分:0)

dirent结构实际上使用char*而非std::string。因此,您将比较两个指针值,它们永远不可能相同。

在这种情况下你必须使用strcmp()

strcmp(entry->d_name,".") == 0