Windows下绝对不能出现在文件路径中的字符是:、*、?、"、<、>、|、、/共9个,任何位置出现即非法;Linux/macOS则需防范空字符和ASCII控制字符(–)。

Windows下哪些字符绝对不能出现在文件路径里
Windows对文件路径的非法字符有硬性限制,:、*、?、"、、<code>>、|、、/ 这9个字符在任何位置(包括文件名、目录名)都禁止使用。哪怕只是字符串校验,只要出现其中之一就应视为非法。
注意: 和 / 在路径中常作分隔符,但若出现在文件名中间(比如 logackup.txt 中的反斜杠在末尾前),就是非法的;同理,. 和空格本身合法,但开头或结尾的空格、连续多个点(如 ...)可能被系统解析为保留名,需额外处理。
-
std::string::find_first_of(":*?"|\/") != std::string::npos是最直接的检测方式 - 不要只检查末尾或只检查文件名部分——整个路径字符串都要扫
- 路径中允许出现
+、-、_、(、)等,无需过滤
Linux/macOS路径校验的重点其实是空字符和控制字符
POSIX系统不禁止 :、? 等符号,真正危险的是