Мы используем boost:: filesystem в нашем приложении. У меня есть "полный" путь, который создается путем объединения нескольких путей:
#include <boost/filesystem/operations.hpp>
#include <iostream>
namespace bf = boost::filesystem;
int main()
{
bf::path root("c:\\some\\deep\\application\\folder");
bf::path subdir("..\\configuration\\instance");
bf::path cfgfile("..\\instance\\myfile.cfg");
bf::path final ( root / subdir / cfgfile);
cout << final.file_string();
}
Окончательный путь печатается как:
c:\some\deep\application\folder\..\configuration\instance\..\instance\myfile.cfg
Это допустимый путь, но когда я показываю его пользователю, я бы предпочел его нормализовать. (Примечание. Я даже не уверен, что "нормализованное" является правильным словом для этого). Вот так:
c:\some\deep\application\configuration\instance\myfile.cfg
В более ранних версиях Boost была функция normalize()
, но она, кажется, устарела и удалена (без каких-либо объяснений).
Есть ли причина, по которой я не должен использовать макрос BOOST_FILESYSTEM_NO_DEPRECATED
? Есть ли альтернативный способ сделать это с помощью библиотеки Boost Filesystem? Или я должен написать код для непосредственного управления контуром в виде строки?