我想删除 C++17 中包含子文件夹和文件的文件夹。我在用着experimental/filesystem
namespace filesys = std::experimental::filesystem;
...
uintmax_t n = filesys::remove_all("tmp");
cout << "Deleted " << n << " files or directories\n";
但是当我运行这段代码时,程序抛出异常
在抛出 'std::experimental::filesystem::v1::__cxx11::filesystem_error' 实例后调用终止
什么():文件系统错误:无法删除全部:目录不为空[tmp]
Aborted
使用编译器 g++ 5.4.0
文档说:
递归地删除 p 的内容(如果它是一个目录)及其所有子目录的内容,然后删除 p 本身,就像重复应用 POSIX 删除一样。不遵循符号链接(符号链接被删除,而不是其目标)
我的代码有问题吗?
抛出此错误的情况可能是 gcc 5.4 实现中的问题:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313
使用更新版本的 gcc 不会引发此类错误。例如,对于空的,不会抛出此错误remove_all
调用 gcc 7.4.0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)