0

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

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);
}

你能帮忙吗?

4

2 回答 2

1

entry->d_name是一个char array不适用的!=,你需要使用strcmp或类似的。

于 2015-08-21T17:15:42.493 回答
0

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

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

strcmp(entry->d_name,".") == 0
于 2015-08-21T17:17:58.083 回答