目前我正在尝试使用std::filesystem
。我正在使用MinGW-W64 GCC 7.1.0开发64位Windows 7。由于此编译器不支持std::filesystem
,因此我必须包含实验版本并与-lstdc++fs
链接。
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
这很好,直到我想创建嵌套目录。如果我使用create_directory()
一次创建一个目录,一切都很完美。现在,如果我改为使用create_directories()
,如果其中一个目录已存在,则会抛出filesystem_error
。
fs::path levelA{"."};
fs::path levelB{"folder"};
fs::path levelAB = levelA / levelB; // "./folder"
bool create_separately; // set this bool as needed
if (create_separately) {
/* This works perfectly */
fs::create_directory(levelA);
fs::create_directory(levelAB);
}
else {
/* This throws because "." already exists */
fs::create_directories(levelAB);
}
将experimental版本的文档与standard版本进行比较,为标准版本添加了另一个句子:
对于尚不存在的p的每个元素执行(1)。如果p已存在,则该函数不执行任何操作(此条件不会被视为错误)。
为什么这首先被视为错误?这被认为是一个错误吗?
另外,有一种简单的方法可以在Windows上更新GCC吗?我读了一些关于GCC 8.1.0正在发布的内容和一些支持它的新MinGW版本,但我似乎无法找到任何下载。
答案 0 :(得分:0)