您可以自己定义+
运算符,以便您可以添加两个boost::filesystem::path
变量。
inline boost::filesystem::path operator+(boost::filesystem::path left, boost::filesystem::path right){return boost::filesystem::path(left)+=right;}
然后你甚至可以添加一个std::string
变量(隐式转换)。这类似于从
的的operator/
的定义包括/升压/文件系统/ path.hpp:
inline path operator/(const path& lhs, const path& rhs) { return path(lhs) /= rhs; }
这里是一个工作示例:
main.cpp中:
#include <iostream>
#include <string>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
inline path operator+(path left, path right){return path(left)+=right;}
int main() {
path p1 = "/base/path";
path p2 = "/add/this";
std::string extension=".ext";
std::cout << p1+p2+extension << '\n';
return 0;
}
编号为
g++ main.cpp -lboost_system -lboost_filesystem
产生输出:
$ ./a.out
"/base/path/add/this.ext"
我不确定这是否比我目前所做的更好,但无论如何我都会接受它。 – Zack 2010-03-07 18:54:56
@Zack:这与你所拥有的非常接近。我已经开始使用1.42 API,注意到你对另一个关于1.35的答案的评论,并且为了得到这个而反向工作。然而,这很容易检查,例如如果p.leaf()==“。” (因为p ==“/ some/dir /”)。 – 2010-03-07 19:17:01