C++ Win32 API中PathAppend和PathCombine的区别
我想了解这些函数之间的区别是什么,我应该使用哪一个来处理路径 例如:我想要“C:\Temp”+。\Folder“=“C:\Folder” 谢谢您必须使用它 连接两个 将正确形成的路径表示为 一条路;还连接任何 相对路径元素 根据MSN文档,特别排除了相对路径限定符: 无法使用pszPath中提供的路径 以“.\”或“.\”开头生成 相对路径字符串 PathCanonicalize()可能值得一提,以防字符串已连接。假设:C++ Win32 API中PathAppend和PathCombine的区别,c++,path,winapi,C++,Path,Winapi,我想了解这些函数之间的区别是什么,我应该使用哪一个来处理路径 例如:我想要“C:\Temp”+。\Folder“=“C:\Folder” 谢谢您必须使用它 连接两个 将正确形成的路径表示为 一条路;还连接任何 相对路径元素 根据MSN文档,特别排除了相对路径限定符: 无法使用pszPath中提供的路径 以“.\”或“.\”开头生成 相对路径字符串 PathCanonicalize()可能值得一提,以防字符串已连接。假设: lpStr1、lpStr2和lpStr3是三个指针,每个指针指向不同的字符
lpStr1
、lpStr2
和lpStr3
是三个指针,每个指针指向不同的字符串
及
str1
、str2
和str3
是类型为std::string
的三个对象
然后
类似于
strcpy(lpStr1, lpStr2);
strcat(lpStr1, lpStr3);
strcat(lpStr1, lpStr2);
这是一个类比
str1=str2+str3代码>
及
PathAppend(lpStr1,lpStr2)代码>
类似于
strcpy(lpStr1, lpStr2);
strcat(lpStr1, lpStr3);
strcat(lpStr1, lpStr2);
这是一个类比
str1+=str2代码>
这相当于
str1=str1+str2
理论上,PathAppend
只能通过PathCombine
实现:
PathAppend(lpStr1,lpStr2)代码>
相当于
PathCombine(lpStr1、lpStr1、lpStr2)代码>
因此,可以通过PathAppend
完成的每个任务也可以通过PathCombine
完成,但事实并非如此
因此,只要您可以使用pathpappend
完成任务,就可以使用pathpappend
如果您的任务不能通过PathAppend
完成,但可以通过PathCombine
完成,请使用PathCombine
如果使用PathCombine
无法完成任务,那么使用PathAppend
肯定无法完成任务,您必须使用另一个API来完成任务
始终使用pathpappend
而不是PathCombine
,如果可能的话,是因为pathpappend
比PathCombine
需要更少的参数,而且它也缩短了代码
如果您可以使用PathAppend
解决问题,但改用PathCombine
,则对PathCombine
的调用中的第一个和第二个参数相同,您可能会重复代码并在代码中键入更多字符
在这种情况下,PathCombine
行比PathAppend
行长,这会降低代码的可读性
因此,只要您的问题可以通过pathpappend
解决,使用pathpappend
总是比使用PathCombine
更好、更高效
否则,如果您的问题无法通过PathAppend
解决,但只能通过PathCombine
解决,则使用PathCombine
根据文档,第一个参数不能以..\or.\开头,但对第二个参数没有限制。在给定的场景中,pszMore有..\。它将为PathAppend工作对于win8及更高版本,存在问题较少的“Cch”版本(采用结果缓冲区大小值)