【发布时间】:2016-03-14 19:52:30
【问题描述】:
我的目标很简单:我想以跨平台方式在给定路径的情况下清除目录(删除其中包含的所有子目录和文件,但不删除目录本身)。
我在网上找到的大多数解决方案都涉及使用 dirent.h,据我了解,这是非标准的,可能不适用于非 POSIX 系统(尤其是 Windows)或使用 Boost.Filesystem。但是,如果我只想清除一个目录,那么构建 Boost 并将其包含在我的项目中需要很多。
有没有办法在标准 C++ 中实现我的目标?或者,标准还没有发展到这一步?
【问题讨论】:
-
“构建 Boost 并将其包含在我的项目中需要很多” - 不,不是。
-
到目前为止,标准 C++ 中还没有它。但是,由于实际上有两个选项 - 使用 readdir 的 Posix,或者使用 FindFirstFile/FindNextFile 的 Windows,我想说,你的情况并不那么可怕。只需使用#ifdef 来选择一个或另一个。
-
@SergeyA:这仅涵盖 POSIX 和 Windows。世界上有很多非 POSIX、非 Windows 的计算机——并不是每台计算机都是主流的桌面商品 PC!
-
@BarryTheHatchet,实际上还是理论上?
-
@SergeyA:两者都有。理论模拟现实(否则它不会有太大用处)
标签: c++ filesystems