我想了解这些功能之间的区别,以及我应该使用哪些功能来处理路径?
例如:我想要“C:\ Temp”+“.. \ Folder”=“C:\ Folder”
由于
答案 0 :(得分:3)
您必须使用PathCombine。
根据MSN文档,连接两个字符串 表示正确形成的路径 一条路;也连接任何 相对路径元素。
PathAppend专门排除相对路径限定符:
pszPath中提供的路径不能 以“.. \”或“。\”开头制作 相对路径字符串。
答案 1 :(得分:3)
PathCanonicalize()可能值得一提,以防字符串已经连接。
答案 2 :(得分:0)
假设:
lpStr1
,lpStr2
和lpStr3
是三个指针,每个都指向不同的字符串。
和
str1
,str2
和str3
是std::string
类型的三个对象。
然后
PathCombine(lpStr1, lpStr2, lpStr3);
类似于
strcpy(lpStr1, lpStr2);
strcat(lpStr1, lpStr3);
类似于
str1 = str2 + str3;
和
PathAppend(lpStr1, lpStr2);
类似于
strcat(lpStr1, lpStr2);
类似于
str1 += str2;
相当于
str1 = str1 + str2
理论上PathAppend
只能用PathCombine
来实现:
PathAppend(lpStr1,lpStr2);
等同于
PathCombine(lpStr1, lpStr1, lpStr2);
因此,PathAppend
可以完成的所有任务也可以由PathCombine
完成,但是事实并非如此。
因此,只要您可以使用PathAppend
完成任务,然后使用PathAppend
。
如果您的任务不能用PathAppend
完成,但是可以用PathCombine
完成,请使用PathCombine
。
如果您的任务不能用PathCombine
完成,那么肯定不能用PathAppend
完成,您将不得不使用另一个API来完成任务。
始终使用PathAppend
而不是PathCombine
的原因,如果可能,是因为PathAppend
所需的参数少于PathCombine
,并且缩短您的代码。
如果您可以使用PathAppend
解决问题,但使用PathCombine
,则对PathCombine
的调用中的第一个和第二个参数是相同的,并且您可能重复了代码和类型您的代码中还有更多字符。
在这种情况下,PathCombine
行比PathAppend
行长,这也使代码的可读性降低。
因此,只要可以使用PathAppend
来解决问题,使用PathCombine
总是比PathAppend
更好,效率更高。
否则,如果您的问题不能用PathAppend
解决,但只能用PathCombine
解决,请使用PathCombine
。