Question

J'utilise la bibliothèque Boost FileSystem et j'ai deux chemins, je dois savoir s'il existe un moyen élégant de vérifier si Path1 est un enfant de Path2 (par exemple Path1 = / USR / local, path2 = / usr). Je peux le faire en utilisant des fonctions de chaîne, mais je me demandais s'il existe un moyen d'utiliser Boost FileSystem Fonctions. Je pourrais le faire avec des itérateurs de chemin, c'est le seul moyen? Y a-t-il une fonction d'assistance qui vérifie cette vérification? J'ai cherché sur la documentation mais je n'ai rien trouvé. Merci

Était-ce utile?

La solution

*path1.begin() == *path2.begin()

Cela signifie cependant que "c: / foo" partage une base avec "c: / bar", qui pourrait être involontaire.

for( boost::filesystem::path::iterator itrLeft( path1.begin() ), itrRight( path2.begin() ); *itrLeft == *itrRight && itrLeft != path1.end() && itrRight != path2.end(); ++itrLeft, ++itrRight ) 

De cette façon, vous pouvez voir combien d'atomes correspondent, je suggère d'utiliser Boost :: Filesystem :: Absolue d'abord si vous voulez le rendre robuste.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top