Pregunta

Estoy usando la biblioteca de archivos de archivos BOOST, y que tiene dos caminos, necesito saber si hay una forma elegante de verificar si PATH1 es un niño de PATH2 (por ejemplo, PATH1= / USR / local, PATH2= / USR).Puedo hacer esto usando funciones de cadena, pero me preguntaba si hay una manera de usar las funciones de Boost Filesystem.Podría hacer esto con los iteradores de ruta, ¿es esa la única manera?¿Hay alguna función de ayuda que hace este cheque?Busqué en la documentación, pero no pude encontrar nada. Gracias

¿Fue útil?

Solución

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

Sin embargo, esto significará que "C: / Foo" comparte una base con "C: / Bar", que podría ser involuntario.

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

De esta manera, puede ver cuántos átomos están coincidiendo, sugiero usar BOOST :: Filesystem :: Absolute primero si desea hacerlo robusto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top