#include <string>
#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
int main()
{
fs::path p("/usr/include/c++/../sys/*");
p = fs::canonical(p);
}
gcc 6.2.0编译好了,但运行时错误说:
在抛出一个实例后终止调用 '的std ::实验::文件系统:: V1 :: __ cxx11 :: filesystem_error'
what():filesystem错误:无法规范化:没有这样的文件或 目录[/usr/include/c++/../sys/*] [/ data / svn / yaoxinliu]已中止
为什么 std::experimental::filesystem::path
不接受 *
这样的通配符?
答案 0 :(得分:3)
std::experimental::filesystem::canonical
将路径p转换为规范的绝对路径,即没有点,点点元素或符号链接的绝对路径。
由于std::experimental::filesystem::canonical
还必须取消引用路径中包含的符号链接,因此它只能接受现有文件或目录的路径。