Ниже приведен фрагмент кода, который я использую для получения списка всех папок в текущей папке. Я хочу покраснеть от «.» и «..» папки из списка, но как-то не могу.
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);
}
Можете ли вы помочь?
entry->d_name
это char array
который не работает с !=
, вам нужно будет использовать strcmp
или похожие.
dirent
структура на самом деле использует char*
не std::string
, Таким образом, вы собираетесь сравнить два значения указателя, которые никогда не будут одинаковыми.
Вы должны использовать strcmp()
для этого случая:
strcmp(entry->d_name,".") == 0