Разница между PathAppend и PathCombine в Win32 API
Я хочу понять, в чем разница между этими функциями, и какой из них я должен использовать для работы с путями?
например: я хочу "C:Temp" + "..Папка" = "C:Folder"
спасибо
3 ответов
вы должны использовать PathCombine для этого.
сцепляет две строки представлять правильно сформированные пути в один путь; также объединяет любые относительные элементы пути.
PathAppend специально исключает относительные квалификаторы пути в документах MSN:
путь, указанный в pszPath, не может начинаться." .\" или." \" вырабатывать относительная строка пути.
предположим, что:
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
line и это делает ваш код также меньше читаемый.
используя PathAppend
всегда лучше и продуктивнее, чем PathCombine
пока ваша проблема может быть решена с PathAppend
.
в противном случае, если ваша проблема не может быть решена с PathAppend
, но может быть решена с PathCombine
только потом использовать PathCombine
.