如何从一条路径中减去另一条路径?

2024-04-05

所以...我有一个基本路径和一个新路径。新路径包含在基本路径中。我需要看看新路径有什么不同。就像我们有 /home/ 一样,新路径是 /home/apple/one ,我需要从中获取 apple/one 。注意 - 当我从 (homePath/diffPath) 创建一些路径时,我需要再次获取 /home/apple/one 。如何使用 Boost FileSystem 来做这样的事情?


使用stem()和parent_path()并从新路径向后走,直到回到基本路径,这是可行的,但我不确定它是否非常安全。 请小心,因为路径“/home”和“/home/”被视为不同的路径。仅当基本路径为 /home (不带尾部斜杠)并且新路径保证位于目录树中的基本路径下方时,以下内容才有效。

#include <iostream>
#include <boost/filesystem.hpp>
int main(void)
{
  namespace fs = boost::filesystem;

  fs::path basepath("/home");
  fs::path newpath("/home/apple/one");
  fs::path diffpath;

  fs::path tmppath = newpath;
  while(tmppath != basepath) {
    diffpath = tmppath.stem() / diffpath;
    tmppath = tmppath.parent_path();
  }

  std::cout << "basepath: " << basepath << std::endl;
  std::cout << "newpath: " << newpath << std::endl;
  std::cout << "diffpath: " << diffpath << std::endl;
  std::cout << "basepath/diffpath: " << basepath/diffpath << std::endl;

  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从一条路径中减去另一条路径? 的相关文章

随机推荐