C++ 如何以可移植的方式检查文件路径是否可能有效?

C++ 如何以可移植的方式检查文件路径是否可能有效?,c++,boost-filesystem,C++,Boost Filesystem,我需要确定用户输入的字符串是否可以创建具有该名称的文件。我的应用程序构建在Qt上,运行在Windows和Mac操作系统上 我在boost.filesystem中发现了一个check函数,即native()。文档中说,“对于操作系统的本机文件系统认为有效的名称,返回true。”听起来像是我需要的,但函数不能正常工作,总是返回false。我在路径中尝试了反向斜杠和正向斜杠,并使用现有和不存在的路径测试了该函数。所有这些测试在Windows上都失败了。感谢chris(见下面的评论),他指出该功能可能被

我需要确定用户输入的字符串是否可以创建具有该名称的文件。我的应用程序构建在Qt上,运行在Windows和Mac操作系统上

我在boost.filesystem中发现了一个check函数,即native()。文档中说,“对于操作系统的本机文件系统认为有效的名称,返回true。”听起来像是我需要的,但函数不能正常工作,总是返回false。我在路径中尝试了反向斜杠和正向斜杠,并使用现有和不存在的路径测试了该函数。所有这些测试在Windows上都失败了。感谢chris(见下面的评论),他指出该功能可能被故意破坏(我倾向于同意这一点)


所以问题是:如何实现我所需要的?

您能给出一个失败的示例输入吗?当然。D:\Work\cpptest-该目录存在于我的计算机上,但native()调用为其返回false。(当然,我已经躲过了代码中的反斜杠:-)也许这是因为它们是版本1的遗留版本。1.53中的标题说“这些函数是版本1的保留。不清楚它们有多大用处,或者如何在以后的版本中推广它们。”为什么要这么做?文件创建失败的方法有很多种,其中大多数都无法事先检查。两阶段检查只会让用户感到困惑。boost函数被破坏的事实也应该暗示了一些事情,因为如果路径明显无效,我想警告用户。