ブーストファイルシステム3パス包含チェック
-
12-11-2019 - |
質問
ブーストファイルシステムライブラリを使用していて、2つのパスを持ち、PATH1がPATH2の子の子であるかどうかを確認するかどうかを知る必要があります(例:PATH1= / usr / local、path2= / usr)。。文字列関数を使用することでこれを行うことができますが、Boostファイルシステム関数を使用している方法があるかどうか疑問に思いました。私はPATHイテレータでこれを行うことができました、それは唯一の方法ですか?このチェックを行うヘルパー機能はいくつかありますか?私は文書を検索しましたが、何も見つけることができませんでした。 ありがとう
解決
*path1.begin() == *path2.begin()
.
しかし、 "C:/ foo"が "C:/ Bar"でベースを共有することを意味します。これは意図しないかもしれません。
for( boost::filesystem::path::iterator itrLeft( path1.begin() ), itrRight( path2.begin() ); *itrLeft == *itrRight && itrLeft != path1.end() && itrRight != path2.end(); ++itrLeft, ++itrRight )
.
このようにあなたは一致している原子の数を見ることができます。
所属していません StackOverflow