Pergunta

Estou usando a biblioteca boost do sistema de arquivos e, tendo dois caminhos, preciso saber se existe uma maneira elegante de verificar se path1 é filho de path2 (por exemplo,caminho1 = /usr/local, caminho2 = /usr).Posso fazer isso usando funções de string, mas queria saber se existe uma maneira de usar funções de reforço do sistema de arquivos.Eu poderia fazer isso com iteradores de caminho, é a única maneira?Existe alguma função auxiliar que faz essa verificação?Procurei na documentação mas não encontrei nada.Obrigado

Foi útil?

Solução

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

No entanto, isso significará que "c:/foo" compartilha uma base com "c:/bar", o que pode não ser intencional.

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

Dessa forma, você pode ver quantos átomos estão correspondentes, sugiro usar boost::filesystem::absolute primeiro se quiser torná-lo robusto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top