Win32 API用于确定路径是相对路径还是绝对路径?

13

有没有一种win32函数可以告诉我路径是相对路径还是绝对路径?

谢谢。

2个回答

16

4
注意 - PathIsRelative 对于 "\test.exe" 返回 0,尽管这样的路径被视为相对于当前驱动器。 - Jason R. Coombs
4
使用任何Shell路径函数时,“小心谨慎”都是极好的建议。 - i_am_jorf
注意 - PathIsRelative() 对于 "X:some\thing" 返回 0,表示 "X:some\thing" 是绝对路径,但实际上应该被视为相对路径 - 相对于 X: 驱动器上的当前工作目录。@Jason R. Coombs,我认为 PathIsRelative() 可能会将 "\test.exe" 视为 "\anything",这可能看起来像是(部分)UNC 路径。在什么情况下 \test.exe 被视为相对于当前驱动器?我有一个程序 C:\test.exe。当我 CD 到某个子文件夹并键入 \test.exe 时,我会收到一条消息:"文件名、目录名或卷标语法不正确。" - Shane
我不记得当时我的评论是什么意思了。可能我是在使用Python语法来描述\test.exe,或者我正在尝试一种边缘情况,期望多个反斜杠被视为一个。我的“相对于当前驱动器”的评论让我觉得我期望\test.exe报告为相对路径。 - Jason R. Coombs

4

正如jeffamaphone所说:您可以使用Shlwapi函数PathIsRelative()来确定给定路径是相对路径还是绝对路径。

但我想补充一点,您可以轻松地使用_fullpath()将相对路径转换为绝对路径,并使用PathRelativePathTo()从绝对路径转换为相对路径。

希望这能帮到您!


1
_fullPath的文档已经移动至这里。此外,除非你在针对一个非常旧版本的Windows,否则几乎总是使用ANSI版本的这些函数来处理路径是一个非常糟糕的想法。如果你使用函数的ACP / ANSI版本,你的程序将无法处理像바위 처럼 단단한/这样的名称文件夹。你应该始终使用这些函数的W版本,至少直到Win10中的UTF-8支持退出beta版为止。 - jrh
1
@jrh 的评论非常扎实。满分10/10。 - NTDLS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接