的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。 –