Microsoft的std::filesystem::remove_all()
实施似乎在除去子目录以外的空目录时提供了与原始boost::filesystem::remove_all()
不同的返回值。 Boost版本对所有已删除的文件系统对象(即文件和目录)进行计数,而MS版本不计算子目录,即使将其删除也是如此。
因此,使用VS2017及其std::experimental::filesystem::v1
时,上面链接中显示了示例程序:
#include <iostream>
#include <cstdint>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path dir = fs::temp_directory_path();
fs::create_directories(dir / "abcdef/example");
std::uintmax_t n = fs::remove_all(dir / "abcdef");
std::cout << "Deleted " << n << " files or directories\n";
}
没有返回官方答案
已删除2个文件或目录
但是
已删除0个文件或目录
我认为这是由于对specs的误解,因为该函数...
返回:已删除文件的数量
也许MS严格将“文件”解释为file_type::regular_file
的文件系统对象,而不是遵循definition in the draft,后者明确声明文件为...
文件系统中保存用户或系统数据的对象。 [...]文件类型包括常规文件和目录。
这是我应该向Microsoft提出的,还是我自己读错了Standard,还是我首先看到了鬼影,甚至没有人可以重现?