在C ++中,我如何validation文件或文件夹path?

目标path的用户inputstring可能包含空格或其他无效字符。

例如:“C:\ users \ username \ \ directoryname \”

请注意,这在path的两边都有空白,以及中间只有一个空格的无效文件夹名称。 检查它是否是一个绝对path是不够的,因为它只处理领先的空白。 删除尾随空白也是不够的,因为你仍然留下了无效的空间 – 文件夹名称在中间。

在我试图用它做任何事情之前,我如何certificatepath是有效的?

Solutions Collecting From Web of "在C ++中,我如何validation文件或文件夹path?"

“证明”路径的唯一方法是打开它。

SHLWAPI提供了一组路径函数,可用于规范路径或验证路径似乎是有效的。 这可以有效地拒绝明显不好的路径,但是如果不通过文件系统,仍然不能相信路径是有效的。

对于NTFS,我相信你给的路径实际上是有效的(尽管资源管理器可能不允许你创建一个只有一个空格的目录。)

Boost文件系统库提供了操纵文件,路径等的助手…看看简单的ls示例和exists函数。

我使用GetFileAttributes检查存在。 适用于这两个文件夹(查找返回值中的FILE_ATTRIBUTE_DIRECTORY标志)和文件。 我已经做了多年,从来没有一个问题。

虽然我实际上认为你最好是“开放”,然后进行理论测试,但是你可能想看看这里描述的正则表达式。

如果你不想打开这个文件,你也可以使用类似POSIX平台上的access()函数或者Windows上的_access()和朋友。 不过,我喜欢里卡多指出的Boost.Filesystem方法。