Vous pouvez définir vous-même l'opérateur +
de sorte que vous puissiez ajouter deux variables boost::filesystem::path
.
inline boost::filesystem::path operator+(boost::filesystem::path left, boost::filesystem::path right){return boost::filesystem::path(left)+=right;}
Ensuite, vous pouvez même ajouter une variable (conversion implicite) std::string
. Ceci est similaire à la définition du operator/
de
include/boost/système de fichiers/path.hpp:
inline path operator/(const path& lhs, const path& rhs) { return path(lhs) /= rhs; }
Voici un exemple de travail:
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;
}
compilé avec
g++ main.cpp -lboost_system -lboost_filesystem
produit la sortie:
$ ./a.out
"/base/path/add/this.ext"
Je ne sais pas si c'est mieux que ce que je fais actuellement mais je l'accepte quand même. – Zack
@Zack: C'est très proche de ce que vous avez. J'avais commencé avec l'API 1.42, j'ai remarqué vos commentaires sur l'autre réponse à propos de 1.35, et j'ai travaillé en arrière pour l'obtenir. Cependant, ceci est plus facile à vérifier, par ex. si p.leaf() == "." (parce que p == "/ some/dir /"). –