windows路径非法字符必须排除ascii控制字符( –)、/:*?"|共9个符号,以及末尾空格或点;std::filesystem::path::has_filename()仅判断路径结构,不校验字符合法性。

Windows下判断路径是否含非法字符用哪些字符集
Windows路径非法字符是硬性限制,不是靠文件系统返回错误才感知的——提前校验能避免后续CreateFile或std::filesystem::create_directories失败后还要回溯。关键不是“哪些字符不能用”,而是“哪些字符必须排除”:ASCII控制字符(
