所以...我有一个基本路径和一个新路径。新路径包含它的基本路径。我需要看看新途径有什么不同。就像我们有/ home /和新路径是/ home/apple/one,我需要从它得到苹果/一个。注意 - 当我从(homePath/diffPath)创建一些路径时,我需要再次获得/ home/apple/one。如何用Boost FileSystem做这样的事情?如何从另一个路径中减去一条路径?
3
A
回答
8
使用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;
}
0
其他的解决方案,如果你知道newpath
真正属于basepath
,可能是:
auto nit = newpath.begin();
for (auto bit = basepath.begin(); bit != basepath.end(); ++bit, ++nit)
;
fs::path = path(nit, newpath.end());
相关问题
- 1. 如何减去elisp中的路径?
- 2. 在makefile中,如何获取从一个绝对路径到另一个绝对路径的相对路径?
- 3. 如何在svg中将一条路径分成两条路径
- 4. SVG路径与另一条路径的一段吻合
- 5. 地图图像路径到ASP.NET中的另一条路径
- 6. 如何修剪重定向网址?从路径到另一条路径?
- 7. ANT:如何从一个路径“添加”路径元素到第二个路径?
- 8. 的Python:绝对路径相对让到另一条路径
- 9. Android在另一条路径上绘制一条路径的顶部
- 10. 如果路径符号链接到另一个路径
- 11. URL重写IIS - 地图从一条路径通往另一个
- 12. 如何从一个UIImage复制任意路径到另一个
- 13. 如何在草图中从矩形中减去矢量路径
- 14. Django减去路径中的符号
- 15. 的Rails给出另一条路径
- 16. 如何有效检查一条路径是否是C#中另一条路径的子节点?
- 17. 重路由NGINX路径到另一条路径(不包括HTTP重定向)
- 18. 去拿路径
- 19. C++如何从一个路径
- 20. 如何从一个路径在Perl
- 21. 如何从一个路径VBA
- 22. 如何从一个文件夹路径
- 23. 如何从一个路径字符串
- 24. Apache mod_rewrite别名到另一个路径的路径
- 25. 减去(遮罩?)一个圆形的路径
- 26. 如何使用shell脚本将文件从一个路径移动到unix中的另一个路径
- 27. Angular2路由器:如何从父路径到子路径共享一个值?
- 28. Paper.js借鉴一条路径
- 29. MKMapView - 抚摸一条路径
- 30. 将画布与多条路径组合到一条路径