为什么std::experimental::filesystem::path不接受通配符,如*&引用;? #包括 #包括 #包括 命名空间fs=std::实验::文件系统; int main() { 路径p(“/usr/include/c++/../sys/*”; p=fs::规范(p); }

为什么std::experimental::filesystem::path不接受通配符,如*&引用;? #包括 #包括 #包括 命名空间fs=std::实验::文件系统; int main() { 路径p(“/usr/include/c++/../sys/*”; p=fs::规范(p); },c++,filesystems,standards,c++17,C++,Filesystems,Standards,C++17,gcc 6.2.0编译正常,但运行时错误显示: 在抛出的实例后调用terminate 'std::experimental::filesystem::v1::uuCXX11::filesystem\u error' what():文件系统错误:无法规范化:没有此类文件或 目录[/usr/include/c++/../sys/*][/data/svn/yaoxinliu]中止 为什么标准::实验::文件系统::路径不接受通配符,如*?根据 std::experimental::filesystem

gcc 6.2.0编译正常,但运行时错误显示:

在抛出的实例后调用terminate 'std::experimental::filesystem::v1::uuCXX11::filesystem\u error'
what():文件系统错误:无法规范化:没有此类文件或 目录[/usr/include/c++/../sys/*][/data/svn/yaoxinliu]中止

为什么
标准::实验::文件系统::路径
不接受通配符,如
*
根据

std::experimental::filesystem::canonical
将路径p转换为规范绝对路径,即没有点、点-点元素或符号链接的绝对路径

由于std::experimental::filesystem::canonical还必须取消对路径中包含的符号链接的引用,因此它只能接受现有文件或目录的路径。

根据

std::experimental::filesystem::canonical
将路径p转换为规范绝对路径,即没有点、点-点元素或符号链接的绝对路径


由于
std::experimental::filesystem::canonical
还必须取消对路径中包含的符号链接的引用,因此它只能接受现有文件或目录的路径。

路径对应于单个文件是设计的基础,不是任意的文件集。路径对应于单个文件而不是任意的文件集是设计的基础。
#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);
}