我想要一个函数,可能在Path Functions之间,检查文件名是否有效。如果有效,我的意思是如果字符串中存在的字符都是有效的(例如,没有?
,>
等。但遗憾的是,没有任何功能。通过网络浏览,我发现了一些技术,我不喜欢它们,或者找不到它们。
%TEMP%
路径中。如果创建失败,则文件名(可能)无效。否则,它是有效的(因此,删除文件)。?:*>
)扩展形式的功能是检查所有无效名称(例如AUX
,CON
等),但这不是问题(至少目前为止)。
是否有任何记录/未记录的功能,我可能错过了,这可以可靠地检查文件名(不路径名)是否有效。
答案 0 :(得分:2)
编辑:PathCleanupSpec
功能现已弃用,不再受支持。有关详细信息,请参阅链接页末尾的Requirements
部分。
感谢Connor的功能。对于其他读者,函数名称为PathCleanupSpec
。使用我已实现以下内容:
bool IsLegalFileName(LPCWSTR filename)
{
WCHAR valid_invalid[MAX_PATH];
wcscpy_s(valid_invalid, filename);
int result = PathCleanupSpec(nullptr, valid_invalid);
// If return value is non-zero, or if 'valid_invalid'
// is modified, file-name is assumed invalid
return result == 0 && wcsicmp(valid_invalid, filename)==0;
}