【发布时间】:2014-03-03 10:28:00
【问题描述】:
我需要一个函数来获取绝对路径,为此我查看了 boost,但它仅在最近的版本中具有,并且 我使用的是旧的 1.44强>。由于我无法在最近的 boost 1.55 或更高版本上更新我的代码,我决定重新编写该函数。 它在 Windows 上运行良好,但我在 Linux 下进行了无限递归,我不明白为什么?该代码基于您可以找到的描述here
欢迎提出解决该问题的所有建议! 谢谢
#include "boost/filesystem.hpp"
namespace bfs = boost::filesystem;
inline bfs::path absolute(const bfs::path& p, const bfs::path& base=bfs::current_path())
{
if(p.has_root_directory())
{
if(p.has_root_name()) return p;
else return absolute(base).root_name() / p;
}
else
{
if(p.has_root_name()) return bfs::path(p.root_name()) / bfs::path(absolute(base).root_directory()) / absolute(base).relative_path() / p.relative_path();
else return absolute(base) / p;
}
}
【问题讨论】:
标签: c++ boost recursion boost-filesystem