Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用Glib(或任何其他库)列出目录中的所有文件?_C++_C_Filesystems_Glib - Fatal编程技术网

C++ 如何使用Glib(或任何其他库)列出目录中的所有文件?

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吗?欢迎任何好的解决

我不知道如何使用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)