【发布时间】:2017-06-12 23:33:22
【问题描述】:
我很好奇是否有以前编写的用于缩短 c 字符串中的文件路径的函数。
例子:
char* filePath1 = "\\folder1\\..\\folder1\\file.dat";
char* filePath2 = "\\folder1\\folder2\\..\\..\\folder1\\file.dat";
char* filePath3 = "\\folder1\\folder3\\..\\folder2\\..\\folder1\\file.dat";
我想知道是否有一个函数可以识别所有这些字符串并将其简化为
char* allFilePaths = "\\folder1\\file.dat";
我没有寄予厚望,但如果有办法避免重写现有(并希望经过良好测试)代码,我完全赞成!
【问题讨论】:
-
请注意,
\f是换页符。您可能打算每次都使用\\f。 -
您是要进行文本替换还是需要验证
folder2和folder3是否存在?系统会验证名称,但这比纯文本替换涉及更多的工作。很可能有 Microsoft API 函数来完成这项工作。我知道我有代码的 Unix 类似物,包括纯文本替换和验证——尽管验证代码不仅仅检查名称是否存在,它也处理符号链接,这很有趣。 (另请注意,由于给定的字符串都是字符串文字,因此您无法在原地可靠地修改它们。) -
我的意思是` \\ ` 谢谢指正!我想进行文本替换,因为我假设所有这些文件夹都存在。您知道那些 Microsoft API 函数可能是什么吗? (我假设我不会处理符号链接,但处理这些会更好)
-
抱歉,我没有记住 Windows API(Unix 已经够难了,但总体上要记住的就更少了)。你可以像我一样搜索,而且你比我更有动力这样做。我可能会使用
site:msdn.microsoft.com作为谷歌搜索词的一部分。对于其余部分,“干净的文件路径”可能会有所帮助。 -
@JonathanLeffler 感谢您的帮助。在我开始深入研究 Window 的 API 之前,您是否知道它可能使用什么样的名称。我什至不知道用什么词来形容这个过程比“缩短路径”更好,这对我来说并没有带来任何好处。它可能有助于大大缩短我的搜索时间。
标签: c windows filepath c-strings