WIN32生成多级目录
CreateDirectoryW 只能生成一个文件夹,如果存在多级文件夹并且之前的文件夹不存在那么就会创建失败
如 目录 1\2\3 本意是创建文件夹3 但是如果 1 2 不存在那么就会 失败
解决方案之一是 通过递归方式来解决
#include<iostream> #include<fstream> #include"windows.h" #include "math.h" #include<vector> #include <direct.h> using namespace std; LPWSTR toUnicode11(const char* _str) { LPWSTR _ret; int _len = strlen(_str) * 2; _ret = new WCHAR[_len]; MultiByteToWideChar(CP_ACP, 0, _str, -1, _ret, _len); return _ret; } void CreateDir(string dir) { if (CreateDirectoryW(toUnicode11(dir.c_str()), 0) == 0) { //error if(string::npos == dir.find('\\'))return; int i = dir.size(); for (; i >= 0; i--) { if ( dir[i]=='\\' )break;; } CreateDir(dir.substr(0,i )); CreateDirectoryW(toUnicode11(dir.c_str()), 0); } } int main() { string path="12\\54\\63\\.324\\4"; CreateDir(path); return 0; }