如果路径的每个元素不存在,请为其创建一个目录
Create a directory for every element of a path if it does not exist
在C++中,我想从路径"path/that/consists/of/several/elements"
创建一个目录。我还想创建该目录的所有父目录,以防它们不存在。如何用性病C++做到这一点?
std::experimental::filesystem
/ std::filesystem
(C++14/C++17( 提供create_directories()
。它为每个路径元素创建一个目录(如果它尚不存在(。为此,它为每个这样的元素执行create_directory()
。
#include <experimental/filesystem>
#include <iostream>
int main()
{
namespace fs = std::experimental::filesystem; // In C++17 use std::filesystem.
try {
fs::create_directories("path/with/directories/that/might/not/exist");
}
catch (std::exception& e) { // Not using fs::filesystem_error since std::bad_alloc can throw too.
std::cout << e.what() << std::endl;
}
return 0;
}
如果异常处理不合适,std::filesystem
函数使用 std::error_code
进行重载:
int main() {
namespace fs = std::experimental::filesystem; // In C++17 use std::filesystem.
std::error_code ec;
bool success = fs::create_directories("path/with/directories/that/might/not/exist", ec);
if (!success) {
std::cout << ec.message() << std::endl; // Fun fact: In case of success ec.message() returns "The operation completed successfully." using vc++.
}
return 0;
}
带 Boost:
boost::filesystem::path dir(to create);
if(boost::filesystem::create_directories(dir)) {
std::cout << "Success" << "n";
}
或者使用平台相关的system
:
system("mkdir " + to_create);
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何创建一个空的全局类并在启动时实例化它
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- visual是否可以在c++中创建一个接收无限数量相同类型(或至少相当数量)参数的函数
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 在c++中为double类型的数组创建一个unique_ptr
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 创建一个包含 c++ 默认值的环境文件
- 如何创建一个类,以便向量工作 std::vector<MyClass<int>> v{ 1,2,3 };