Windows下绝对不能出现在路径里的字符是:、*、?、"、、|这7个ASCII字符,以及ASCII 0–31控制字符;/和虽为合法分隔符,但混用可能引发旧API解析异常。

Windows下哪些字符绝对不能出现在路径里
Windows对路径字符有硬性限制,:、*、?、"、、<code>>、| 这7个字符在任何位置(文件名、目录名、扩展名)都非法,系统调用如 CreateFileA 会直接返回 ERROR_INVALID_NAME。注意:/ 和 是路径分隔符,本身合法,但连续出现或结尾时可能引发逻辑错误,不属于“禁用字符”范畴。
实际检测只需检查这7个字符是否存在,无需考虑上下文:
bool has_invalid_win_char(const std::string& path) {
static const std::string invalid = ":*?"<>|";
return std::any_of(path.begin(), path.end(),
[&invalid](char c) { return invalid.find(c) != std::string::npos; });
}
Linux/macOS路径中真正危险的是什么
POSIX系统没有全局禁用字符表,但