【问题标题】:What is a modern way in C++ to execute "mkdir -p"?C++ 中执行“mkdir -p”的现代方式是什么?
【发布时间】:2020-11-06 10:31:23
【问题描述】:

C++17 标准引入了<filesystem> 库,它提供了一些对文件系统、路径、文件和目录执行操作的工具。为了创建一个新目录,可以使用 create_directory.

但是,如果父目录不存在,这个函数就会失败,因为它相当于没有标志的UNIXmkdir。除了给定的参数之外,是否要创建所有父目录,运行mkdir 并带有标志-p。但是功能是C++17没有提供添加标志的选项。

还有其他方法可以同时以 C++ 风格创建整个目录集吗?

在<cstdlib>的帮助下有一个C风格的选项:

std::system("mkdir -p NEW_DIRECTORY")

但是,如果 NEW_DIRECTORY 提供为 string,那么之前必须执行以下操作:

std::string mkdir_s = "mkdir -p "s + NEW_DIRECTORY;                                     
std::system(mkdir_s.c_str());

【问题讨论】:

  • 我认为create_directories() 可以满足您的需求。

标签: c++ filesystems mkdir


【解决方案1】:

你想要的是std::filesystem::create_directories,它将

对 p 中不存在的每个元素执行 (1)[create_directory]。如果 p 已经存在,则函数什么也不做(这种情况不被视为错误)。

【讨论】:

  • 谢谢!在查看文档时,我应该更加专心
  • @spiridon_the_sun_rotator 不用担心。不客气。
猜你喜欢
  • 2019-02-18
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多