C++中现代的执行"mkdir -p"的方法是什么?

3
C++17标准引入了<filesystem>库,该库提供了一些在文件系统、路径、文件和目录上执行操作的工具。要创建一个新目录,可以使用create_directory。然而,如果父目录不存在,此函数将失败,因为它相当于没有标志的UNIX mkdir。如果想要同时创建给定参数的所有父目录,可以使用带有-p标志的mkdir。但是C++17函数不提供添加标志的选项。
是否有另一种以C++风格同时创建整个目录集的方法?
有一个C风格的选项,可以通过<cstdlib>来实现:
std::system("mkdir -p NEW_DIRECTORY")

然而,如果提供的NEW_DIRECTORYstring,那么需要进行以下操作:

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

4
我认为create_directories()可以实现您想要的功能。 - undefined
1个回答

5
你需要使用的是 std::filesystem::create_directories,它会为p中每个不存在的元素执行(1)[create_directory]。如果p已经存在,则该函数不会执行任何操作(这种情况不视为错误)。

谢谢!我应该更加注意,在查阅文档时。 - undefined
@spiridon_the_sun_rotator 没问题。不客气。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接