windows中绝对不能出现在文件名中的字符是 / : * ? " |,共9个,任何位置使用均会导致系统调用失败。

Windows系统下哪些字符绝对不能出现在文件名中
Windows对文件名有明确的非法字符限制,\ / : * ? " | 这9个字符在任何位置(包括文件名、扩展名、路径各段)都禁止使用。哪怕只是test<.txt>也会导致<code>CreateFile失败或std::filesystem::create_directories抛出std::filesystem::filesystem_error。
注意:CON、AUX、NUL等设备名也是非法文件名,但它们属于保留名而非非法字符问题,需单独检查;此处只聚焦“字符级”校验。
- 最稳妥的做法是遍历每个字符,用
std::any_of配合预定义非法集判断 - 不要依赖
std::isprint——空格、点(.)、连字符(-)等是合法的,但控制字符(如
