c ++如何从路径创建目录

时间:2009-09-03 14:51:09

标签: c++ directory

在给出这样的路径时创建目录的简便方法是什么:“\ server \ foo \ bar \”

请注意,中间目录可能不存在。

CreateDirectory和mkdir似乎只创建目录的最后一部分,否则会给出错误。

平台是windows,MSVC编译器。

谢谢!

5 个答案:

答案 0 :(得分:23)

如果您可以使用外部库,我会查看boost::filesystem

#include <boost/filesystem.hpp>
namespace fs=boost::filesystem;

int main(int argc, char** argv)
{
    fs::create_directories("/some/path");
}

答案 1 :(得分:6)

SHCreateDirectoryEx()可以做到这一点。它可以在XP SP2和更新版本的Windows上使用。

答案 2 :(得分:1)

我写了一个循环。将路径拆分为组件,然后“走它”,即从头开始,检查它是否存在。如果是,请输入并继续。如果没有,请创建它,输入并继续。对于奖励积分,检测组件是否存在,但是是文件而不是目录。

答案 3 :(得分:0)

您还可以使用Boost::Filesystem库中的模板bool create_directories(const Path&amp; p)。它不仅适用于Windows。

答案 4 :(得分:0)

C++17起:

bool create_directories( const std::filesystem::path& p );
bool create_directories( const std::filesystem::path& p, std::error_code& ec );

更多信息:https://en.cppreference.com/w/cpp/filesystem/create_directory