WIN32生成多级目录

梦想游戏人
目录:
C/C++

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;
}
Scroll Up