我们在应用程序中使用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();
}
Run Code Online (Sandbox Code Playgroud)
最终路径打印为:
c:\some\deep\application\folder\..\configuration\instance\..\instance\myfile.cfg
Run Code Online (Sandbox Code Playgroud)
这是一个有效的路径,但是当我向用户显示它时,我更喜欢它被规范化.(注意:我甚至不确定"标准化"是否是正确的词).像这样:
c:\some\deep\application\configuration\instance\myfile.cfg
Run Code Online (Sandbox Code Playgroud)
早期版本的Boost有一个normalize()功能 - 但它似乎已被弃用和删除(没有任何解释).
有没有理由我不应该使用BOOST_FILESYSTEM_NO_DEPRECATED宏?有没有其他方法可以使用Boost Filesystem库执行此操作?或者我应该编写代码来直接将路径作为字符串操作?