【问题标题】:Recursively list directories, c++ [duplicate]递归列出目录,c ++ [重复]
【发布时间】:2013-08-17 14:27:08
【问题描述】:

我正在从我的跨平台 c++ 代码访问一个目录。我知道这个目录有三个子目录,但是它们的名字是随机生成的。

我想要的是一个列表,其中包含这些目录(不是文件!)的名称作为 std::string 类型。 我非常希望避免使用诸如 boost 或 qt 之类的库,并尽可能使用标准 c++。

【问题讨论】:

  • C++ 中(目前)还没有处理目录和目录遍历的功能。要么使用 Boost 等跨平台库,要么编写您自己的类,使用每个平台的本机功能。
  • 文件系统的东西是特定于平台的,如果不将程序与不可移植的东西接口,您就无法执行此类任务,boost::filesystem 让您在抽象平台的同时执行此任务,这是一个很大的优势.
  • 如前所述,您需要特定于平台的代码来访问文件系统,因此对于您的应用程序支持的所有操作系统,您需要#ifdefs,或者使用一些具有这些@987654322 的跨平台库@s 里面。这有几个库,cmet中提到的Qt和boost是其中的两个,你可以选择你想要的
  • 有很多关于如何查找文件的问题,比如你提到的 Dariusz。不是文件夹。并且不允许使用库,这就是我不能使用 boost 的原因! :-(

标签: c++ list


【解决方案1】:

我推出了自己的...有效地实施了“findFirst”和“findNext”方法。在 Windows 上,我使用了 _findfirst_findnext_finddata_t 结果可用于确定它是否是目录(用于递归)。在 *nix 平台上,我使用 opendirreaddir 然后使用 stat 来确定它是否是一个目录。

【讨论】:

  • 非常感谢。这些 _find 正是我想要的!
猜你喜欢
  • 2017-07-15
  • 2013-07-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多