Linux Dirent: получение списка всех папок внутри каталога

Ниже приведен фрагмент кода, который я использую для получения списка всех папок в текущей папке. Я хочу покраснеть от «.» и «..» папки из списка, но как-то не могу.

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

Можете ли вы помочь?

0

Решение

entry->d_name это char array который не работает с !=, вам нужно будет использовать strcmp или похожие.

1

Другие решения

dirent структура на самом деле использует char* не std::string, Таким образом, вы собираетесь сравнить два значения указателя, которые никогда не будут одинаковыми.

Вы должны использовать strcmp() для этого случая:

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

По вопросам рекламы [email protected]