在给出这样的路径时创建目录的简便方法是什么:“\ server \ foo \ bar \”
请注意,中间目录可能不存在。
CreateDirectory和mkdir似乎只创建目录的最后一部分,否则会给出错误。
平台是windows,MSVC编译器。
谢谢!
答案 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