您可以自己定義+
運算符,以便您可以添加兩個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