We are using boost::filesystem in our application. I have a 'full' path that is constructed by concatenating several paths together:
#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();
}
The final path is printed as:
c:somedeepapplicationfolder..configurationinstance..instancemyfile.cfg
This is a valid path, but when I display it to the user I'd prefer it to be normalized. (Note: I'm not even sure if "normalized" is the correct word for this). Like this:
c:somedeepapplicationconfigurationinstancemyfile.cfg
Earlier versions of Boost had a normalize()
function - but it seems to have been deprecated and removed (without any explanation).
Is there a reason I should not use the BOOST_FILESYSTEM_NO_DEPRECATED
macro? Is there an alternative way to do this with the Boost Filesystem library? Or should I write code to directly manipulating the path as a string?