【发布时间】:2010-12-04 14:01:24
【问题描述】:
我正在尝试创建一个采用目录名称(C:\foo\bar、..\foo\bar\..\baz 或 \\someserver\foo\bar)的函数,并根据需要创建目录以便创建整个路径。
我自己正在尝试一个非常幼稚的实现,这似乎是一个字符串处理的噩梦。有/ 与\,有以\\ 开头的网络共享的特殊情况(你也不能尝试 mkdir() 路径的前两级,即机器名和共享名) ,并且有\.\类型的废话可以存在路径中。
是否存在在 C++ 中执行此操作的简单方法?
【问题讨论】:
-
为什么不直接使用 Win32 API 呢?
-
使用 Boost::filesystem 这个链接会帮助你:) boost.org/doc/libs/1_40_0/libs/filesystem/doc/index.htm
-
@JonathanFeinberg:在版本 8 之前的 Windows 中,路径名的解析受到严格限制(MAX_PATH 长度限制,不支持“\\?\”前缀等)。您的评论确实适用于 Windows仅限 8 及更高版本。
-
这是我有生以来第一次看到接受了 -10 票的答案,而且它是由拥有 17k 声誉的用户撰写的。
-
如果您不想做噩梦,请使用 GetFullPathName 规范化路径字符串。