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;
}
Run Code Online (Sandbox Code Playgroud)
所以第一个点元素不算冗余.然而,无论test和./test使用提高文件系统时,显然解析为同一个文件,所以这似乎不一致给我.这是预期的行为吗?
更新:C++ 17文件系统库"test"按预期返回(GCC 8.2.0,Linux).
这是合理的行为,因为虽然你是对的test,并且./test通常指的是同一件事,但并非到处都是这种情况。
例如,如果您./test在 shell 中作为命令运行,它将始终在当前目录中查找该程序,而不是在其他地方。但如果您运行它,test它将在运行时路径(例如$PATH)中查找。
因此,是否test和./test引用同一个文件实际上是依赖于上下文的——因此这./并不是多余的。
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |