Для Windows XP и выше. Ожидает, что строка с нулевым символом завершена и количество рекурсивных действий в качестве параметров.
Примечание: Сепараторы пути должны быть «\»
bool CreateRecursiveDirectoryW(const wchar_t* filepath, const int max_level)
{
bool result = false;
wchar_t path_copy[MAX_PATH] = {0};
wcscat_s(path_copy, MAX_PATH, filepath);
std::vector<std::wstring> path_collection;
for(int level=0; PathRemoveFileSpecW(path_copy) && level < max_level; level++)
{
path_collection.push_back(path_copy);
}
for(int i=path_collection.size()-1; i >= 0; i--)
{
if(!PathIsDirectoryW(path_collection[i].c_str()))
if(CreateDirectoryW(path_collection[i].c_str(), NULL))
result = true;
}
return result;
};