- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在尝试使用std::filesystem
。我正在使用 MinGW-W64 GCC 7.1.0 处理 Windows 7 64 位。由于此编译器不支持 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版本,为标准版本增加了一句:
Executes (1) for every element of p that does not already exist. If p already exists, the function does nothing (this condition is not treated as an error).
为什么这首先被视为错误?这被认为是一个错误吗?
此外,有没有一种简单的方法可以在 Windows 上更新 GCC?我读到了有关 GCC 8.1.0 发布的信息以及一些支持它的新 MinGW 版本,但我似乎找不到任何下载。
最佳答案
也许你是这个意思,但请注意,只有你引用的第二句话相对于 TS 版本发生了变化,并且自从提出这个问题以来又发生了变化。指的是p
的情况已经存在并且可能不是目录;该函数返回 false
表明它什么也没做,但在询问时它没有报告任何错误,无论 p
的性质如何。逻辑是,大多数操作系统不区分这种情况,因此由应用程序开发人员询问他们是否关心。
它was added由于 LWG issue ;前面的措辞的含义充其量是不清楚的,没有解释如果函数未能满足其规定的后置条件会发生什么。没有“后置条件失败是错误”的一般概念,而是“在没有报告错误的情况下后置条件失败在逻辑上是不可能的”。
自从这个答案的初始版本以来,paper已接受,当且仅当冲突对象不是目录时才将其更改为错误,需要在许多平台上进行后续检查。这对于 C++ 来说是不寻常的,但结果被认为更直观,而且操作成本也相对较高。
无论如何,您的实现失败的原因是 .
似乎是有问题的。 (对于如何最轻松地获取更新版本,我没有任何特殊提示。)
关于c++ - create_directories() 与 create_directories(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50227995/
目前我正在尝试使用std::filesystem。我正在使用 MinGW-W64 GCC 7.1.0 处理 Windows 7 64 位。由于此编译器不支持 std::filesystem,因此我必须
我在使用 boost create_directories() 在远程计算机上的共享文件夹上创建目录时遇到问题。我只有阅读此共享的权限。但是我使用具有完全读写访问权限的用户凭据创建连接。 使用 WNe
当给定不存在带有尾部斜杠的路径作为参数时,GCC(10.0.1)和Clang(11.0.0)/ MSVC(VS 16.4.3)显示出与std::filesystem::create_directori
我正在使用 boost 创建一个目录来放置一些临时文件。 int main( int argc, char* argv[] ) { std::cout << "Current Dir: " <
我正在尝试使用 Boost.Filesystem 创建一个目录(目录可以由用户提供,因此它可能是一个包含嵌套目录的路径;该路径中的所有目录、部分目录或不存在目录都可以启动).当我运行程序时,创建了一个
我想对 boost 文件系统函数 create_directories() 的失败案例进行单元测试,即当 create_directory 失败时。有人可以就如何执行此操作提供任何建议吗?另一个要求是
当我尝试 shell_exec('/home/user/scripts/./script') 时,出现以下错误: terminate called after throwing an instance
我想在Boost 1.7.3中创建一个隐藏目录。当我尝试: boost::filesystem::create_directory("/MyPath/.myFolder"); 它不起作用,什么也不做。
我有一个在 Windows XP SP3 中运行的使用 Boost 1.47.0 的 Visual Studio 2008 C++03 应用程序。 调用 boost::filesystem::crea
所以,我正在使用像这样的简单代码 boost::system::error_code ec; if (!boost::filesystem::create_directory(out_path.par
我是一名优秀的程序员,十分优秀!