Слабый канонический путь в C++
Лишние точки в известной части пути убирает weakly_canonical и не требует существования конечного файла.
Так можно заранее привести к читаемому виду
имя, которое программа собирается создать.
Запишем путь с ".." и выведем результат
нормализации:
#include <filesystem>
#include <iostream>
std::filesystem::path raw{"logs/../notes.txt"};
std::filesystem::path flat = std::filesystem::weakly_canonical(raw);
std::cout << flat.string() << "\n";
Хвост "notes.txt" может еще не лежать
на диске - функция все равно схлопнет каталоги
в начале цепочки.
Постройте std::filesystem::path messy
со значением "tmp/../cfg.ini". Выведите
std::filesystem::weakly_canonical(messy).string.