最可靠方法是用std::filesystem::path结合平台特性校验:先构造path对象,再检查has_root_name()或has_root_path(),并过滤 、控制字符及windows非法字符(|?*等)。

Windows下用std::filesystem::path判断路径合法性最可靠
Windows对路径格式容忍度高,但“合法字符串”不等于“存在路径”,也不等于“可被系统解析”。直接用正则或手写规则容易漏掉\?C:、UNC路径\servershare、带环境变量的%TEMP%ile.txt等特例。C++17起std::filesystem::path内部已封装平台适配逻辑,是首选方案。
关键不是“能否构造成功”,而是“构造后是否触发异常”——因为std::filesystem::path构造函数本身不抛异常,但某些非法字符(如
