根据MSDN,C:tmp.txt
的路径应视为相对路径,但PathIsRelative()
返回FALSE
而不是TRUE
。
这是一个错误吗?或者我错了?
答案 0 :(得分:5)
这取决于亲戚的意思。像C:tmp.txt
这样的路径非常特别。它相对于驱动器C上的当前目录。另一方面,tmp.txt
相对于进程当前目录。这可能不在驱动器C上。实际上,每个驱动器的当前目录也相当特殊,通过一些奇怪的环境变量实现,纯粹是为了保持与DOS的一些兼容性。关于这个相当神秘的主题的更多内容可以在Raymond Chen的文章中找到:Why does each drive have its own current directory?
PathIsRelative
看起来与你有不同的看法,即相对路径是什么。 PathIsRelative
函数不会将与指定驱动器上的工作目录相关的路径视为相对路径。因此PathIsRelative("C:tmp.txt")
会返回FALSE
。如果你想要一个将这种路径视为相对路径的函数,你可能需要自己编写它。手动解析路径以检测这种情况非常容易。