Linux Dirent:获取目录内所有文件夹的列表
Linux Dirent: Getting a list of all folders inside a directory
以下是我用来获取当前文件夹中所有文件夹列表的代码片段。我想要红色的“。”和列表中的“..”文件夹,但不知何故不能。
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
以下是我用来获取当前文件夹中所有文件夹列表的代码片段。我想要红色的“。”和列表中的“..”文件夹,但不知何故不能。
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