C++ 使用C+读取文件名+;

C++ 使用C+读取文件名+;,c++,file-io,C++,File Io,是否有一种纯粹使用C(或C++)从文件夹中读取文件名的方法?这意味着不包括windows.h(没有FindFirstFile()等) 看起来fstream没有这个功能。我知道文件名依赖于操作系统,但我希望有一些库可以在Windows中使用它。是一个很好的解决方案。当然,在幕后,它仍将使用windows API调用(当您在windows上构建时),但这是从您那里抽象出来的。C++通常不会为您提供此类功能。跨平台解决方案是使用。尝试POSIX函数opendir()和readdir()来迭代目录。请参

是否有一种纯粹使用C(或C++)从文件夹中读取文件名的方法?这意味着不包括windows.h(没有FindFirstFile()等)


看起来fstream没有这个功能。我知道文件名依赖于操作系统,但我希望有一些库可以在Windows中使用它。

是一个很好的解决方案。当然,在幕后,它仍将使用windows API调用(当您在windows上构建时),但这是从您那里抽象出来的。

C++通常不会为您提供此类功能。跨平台解决方案是使用。

尝试POSIX函数opendir()和readdir()来迭代目录。请参阅手册页面,其中包含一些很棒的示例代码。这些功能应该可以在大多数平台上使用,包括Windows和UNIX

如果您希望在windows上使用opendir()和readdir(),您可以下载MinGW,这是著名GNU编译器集合的windows端口。它包括UNIX头文件的windows端口,包括dirent.h,这将允许您使用指定的函数。请记住,这两种方法都会调用本机API


-John

这与您的另一个问题完全相同,您刚刚添加了“no FindFirstFile()”。请尝试不要添加多余的问题。也请参阅上一个问题的此解决方案:。像我们其他人一样,他推荐boost。不幸的是,你第一次给他这个答案时,他没有听清楚:-P。这些功能在Windows上不可用,因为Windows不是POSIX。然而,它们在Cygwin下可用。windows不提供posix函数的一小部分作为其(嗯,失败)posix子系统的一部分吗?我从来都不知道到底什么是其中的一部分,什么不是。windows NT提供了一个“posix子系统”,它与posix的兼容性有限。我相信最近的版本已经放弃了这个功能,而且它从一开始就没有得到很好的支持。事实上,我相信您需要在cygwin.dll的基础上进行构建,这样才能工作。mingw只提供了一个c/c++编译器,它与microsoft运行时相链接。这就是我所说的。。。它将以任何一种方式调用本机Win32 API,但您不必在代码中使用它们。