boost::filesystem::path::lexically_normal()
状態のドキュメント:boost :: filesystem :: path :: lexically_normal:これは間違った動作ですか?
戻り除去冗長カレントディレクトリ(ドット)、親ディレクトリ(ドットドット)、およびディレクトリセパレータ要素と
*this
。
参照:http://www.boost.org/doc/libs/1_63_0/libs/filesystem/doc/reference.html
以下プリント./test
Iはtest
を期待(ブースト1.63.0を使用して):
#include <boost/filesystem/path.hpp>
#include <iostream>
int main(void)
{
std::cout << boost::filesystem::path{"./test"}.lexically_normal().string() << "\n";
return 0;
}
したがって、最初のドット素子を冗長考慮されていません。しかし、test
と./test
は、ブーストファイルシステムを使用しているときには明らかに同じファイルに解決されるので、これは私には矛盾しているようです。これは予想される動作ですか?
ここで、 'test'は相対パスであると暗黙のうちに仮定しています。これは移植可能なコードでは危険な仮定です。 '。/ test'は明白に相対的です。 – MSalters
これはUNIXの感性です。終了する場所はほとんどないので、 'perms'の根源となる0777は、Unix以外のOSには移植できません。 –
@MSaltersでは、普遍的ではなく、OpenVMSが気になります。 –