Подскажите пожалуйста наилучший способ как записать файл в некоторую папку folder1\folder2\...\folderN, если в наличии только папка folder1\folder2\...\folderM.
При этом запись выполняется с помощью std::ofstream.
Понятно, что задачу можно решить в лоб - распарсить путь к файлу и проверить существует ли каждая папка в пути и если нет - создать ее.
Но может/наверное существует более простой путь для решения этой задачи?
Я бы делал так - воспользовался стандартной библиотекой <filesystem> и создавал бы каталог с помощью create_directories() не глядя, есть ли уже такой каталог или нет. Нет - создаст, есть - ну и хорошо :)
А потом бы создавал файл.
Все равно проверка существования 100% гарантии не дает - между проверкой и созданием файла кто-то другой может каталог и стереть :)
Update
#include <iostream>
#include <filesystem>
int main(int argc, const char * argv[])
{
std::error_code e;
std::cout << std::filesystem::create_directories("G:\\Tmp\\Test\\aaa\\bbb\\ccc",e) << std::endl;
std::cout << std::filesystem::create_directory("G:\\Tmp\\Test\\zzz",e) << std::endl;
}
VC++ 2017 15.9.7
Скомпилировало, работает.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости