windows路径中绝对禁止的字符是、/、:、*、?、"、、|,它们在任何位置均导致系统直接拒绝访问。

Windows系统下哪些字符绝对不能出现在文件路径中
Windows对文件名和路径有明确的保留字符集,\、/、:、*、?、"、、<code>>、| 这9个字符在任何位置(包括文件名、目录名、扩展名)都禁止使用。它们不是“建议避免”,而是由NTFS/FAT驱动直接拒绝创建或访问——哪怕只是出现在std::string里做路径拼接,后续调用CreateFileA或fopen时也会返回ERROR_INVALID_NAME或nullptr。
需要特别注意的是:: 在路径中仅允许出现在盘符后(如 C:),其他位置(如 log:2024.txt 或 data/backup:final/)均非法;. 和 .. 是保留名称,但作为路径组件本身不违法,真正违法的是以.或..为完整文件名(如 mkdir . 在某些API下会失败)。
如何用C++跨平台检查路径中的非法字符
没有标准库函数能直接判断“是否非法”,但可以手动扫描。重点不是“过滤掉什么”,而是“哪些字符一旦出现就必然失败”。以下逻辑适用于Windows,Linux/macOS可放宽(仅需排除/和空字符
