的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
(使用Boost 1.63.0),在那裏我會想到test
:
#include <boost/filesystem/path.hpp>
#include <iostream>
int main(void)
{
std::cout << boost::filesystem::path{"./test"}.lexically_normal().string() << "\n";
return 0;
}
所以第一點元件不被認爲是多餘的。但是,使用boost文件系統時,test
和./test
顯然會解析爲同一個文件,所以這對我來說似乎不一致。這是預期的行爲?
你在這裏隱含地假設'test'是一個相對路徑。這在便攜式代碼中是一個危險的假設。 '。/ test'是明確的相對。 – MSalters
這是一個Unix的感性。幾乎沒有它結束的地方,'perms'的0777永遠不會轉移到非Unix操作系統。 –
@MSalters,不是普遍的OpenVMS。 –