としてはdocumentationで説明し、次の予想される出力は次のようになります。parent_path()とや末尾のスラッシュなし
boost::filesystem::path filePath1 = "/home/user/";
cout << filePath1.parent_path() << endl; // outputs "/home/user"
boost::filesystem::path filePath2 = "/home/user";
cout << filePath2.parent_path() << endl; // outputs "/home"
質問は、どのようにこの問題に対処しますか?つまり、引数としてパスを受け入れると、後ろにスラッシュがあるかどうかをユーザーが気にする必要はありません。一番簡単な方法は、私が欲しい「/ホーム」の親パスを取得するにはTWICE parent_path()
を呼び出し、その後、末尾にスラッシュを追加することであろうように思える:
boost::filesystem::path filePath1 = "/home/user/";
filePath1 /= "/";
cout << filePath1.parent_path().parent_path() << endl; // outputs "/home"
boost::filesystem::path filePath2 = "/home/user";
filePath2 /= "/";
cout << filePath2.parent_path().parent_path() << endl; // outputs "/home"
が、それはばかげているようです。フレームワーク内でこれを処理するより良い方法はありますか?私が代わりにparent_path()
2回呼び出すのディレクトリstring
と、前の操作を行うことをお勧めだろうが
@Nachoここに行く:) –
興味深いことに、これは複数の末尾の区切り文字を処理しません。 –
あなたは 'filePath1.lexically_normal().remove_trailing_separator()。parent_path()'を使うことができましたが、探し始めます( "/ home/user //")remove_trailing_separator()。parent_path奇妙なaigain .. – Wurmloch