C++ 如何使用Glib(或任何其他库)列出目录中的所有文件?
我不知道如何使用GLib(GIO?)列出给定目录中的所有文件(文件名?)。没有好的文档或教程。欢迎使用任何代码片段。如果使用GLIB来做这件事是不可能的(或太麻烦的),那么有没有好的C或C++第三方库来完成这一点。除了Boost.FileSystem,因为我在minGw上编译Boost.FileSystem时遇到了很多麻烦。当然,“dirent.h”是最后的选择,但它不是标准的,尽管gnu gcc(mingw)支持它,但它不包括在MSVC工具链中。那么建议使用dirent.h吗?欢迎任何好的解决方案C++ 如何使用Glib(或任何其他库)列出目录中的所有文件?,c++,c,filesystems,glib,C++,C,Filesystems,Glib,我不知道如何使用GLib(GIO?)列出给定目录中的所有文件(文件名?)。没有好的文档或教程。欢迎使用任何代码片段。如果使用GLIB来做这件事是不可能的(或太麻烦的),那么有没有好的C或C++第三方库来完成这一点。除了Boost.FileSystem,因为我在minGw上编译Boost.FileSystem时遇到了很多麻烦。当然,“dirent.h”是最后的选择,但它不是标准的,尽管gnu gcc(mingw)支持它,但它不包括在MSVC工具链中。那么建议使用dirent.h吗?欢迎任何好的解决
注:我不知道这是否应该被标记为C或C++。我使用C++,但是GLUB是C库。在Posix系统上,< P>,我相信代码> OpenDR< /Cudio> /Cord>Redidir <代码> >代码> CudieDr.<代码>,相关的<代码> dioR< /COD>结构是您所需要的。在Win32上,不太确定,但在POSIX系统上,是的,我相信
opendir
/readdir
/closedir
和相关的dirent
结构就是您所需要的。在Win32上,不太确定,但可能是?如果您正在寻找一个glib
示例,请看这里
GDir *dir;
GError *error;
const gchar *filename;
dir = g_dir_open(".", 0, &error);
while ((filename = g_dir_read_name(dir)))
printf("%s\n", filename);
如果您正在寻找一个
glib
示例,请点击这里
GDir *dir;
GError *error;
const gchar *filename;
dir = g_dir_open(".", 0, &error);
while ((filename = g_dir_read_name(dir)))
printf("%s\n", filename);
现在你用Gio来做这个。来自GNOMEShell,使用Javascript绑定gjs。比如:
const directory = GLib.build_filenamev([ 'some', 'path']);
try {
fileEnum = directory.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
fileEnum = null;
}
if (fileEnum != null) {
let info;
while ((info = fileEnum.next_file(null))) {
// Do something with info
// or with fileEnum.get_child(info)
}
}
现在你用Gio来做这个。来自GNOMEShell,使用Javascript绑定gjs。比如:
const directory = GLib.build_filenamev([ 'some', 'path']);
try {
fileEnum = directory.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NONE, null);
} catch (e) {
fileEnum = null;
}
if (fileEnum != null) {
let info;
while ((info = fileEnum.next_file(null))) {
// Do something with info
// or with fileEnum.get_child(info)
}
}
GLib
和glibc
是两个完全不同的库。你说的是哪一个?对不起。我不想承认这一点,但我是个白痴。GLIb是GTK用户为其实用函数库选择的名称,不应该与GNU glibc库混淆。网站上有一些文档。正如e.dan指出的,有C++函数。GLib的优点是GLib通常会执行自己的内存分配,而C++则不这样做。GLib
和glibc
是两个完全不同的库。你说的是哪一个?对不起。我不想承认这一点,但我是个白痴。GLIb是GTK用户为其实用函数库选择的名称,不应该与GNU glibc库混淆。网站上有一些文档。正如e.dan指出的,有C++函数。GLib的优点是GLib通常会自己分配内存,而C++则不会。你的回答很快,切中要害,很有帮助。(+1)谢谢。你的回答很快,切中要害,很有帮助。(+1)