Разница между 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.