Поделиться через


Функция PathCombineW (shlwapi.h)

Объединяет две строки, представляющие правильно сформированные пути, в один путь; также объединяет все относительные элементы пути.

Примечание Неправильное использование этой функции может привести к переполнению буфера. Вместо нее рекомендуется использовать более безопасную функцию PathCchCombine или PathCchCombineEx .
 

Синтаксис

LPWSTR PathCombineW(
  [out]          LPWSTR  pszDest,
  [in, optional] LPCWSTR pszDir,
  [in]           LPCWSTR pszFile
);

Параметры

[out] pszDest

Тип: LPTSTR

Указатель на буфер, который при успешном возвращении этой функции получает строку объединенного пути. Необходимо задать размер этого буфера MAX_PATH, чтобы убедиться, что он достаточно велик для хранения возвращаемой строки.

[in, optional] pszDir

Тип: LPCTSTR

Указатель на строку максимальной длины, заканчивающуюся значением NULL, MAX_PATH, содержащую первый путь. Это значение может иметь значение NULL.

[in] pszFile

Тип: LPCTSTR

Указатель на строку максимальной длины, заканчивающуюся значением NULL, MAX_PATH, содержащую второй путь. Это значение может иметь значение NULL.

Возвращаемое значение

Тип: LPTSTR

Указатель на буфер, который при успешном возвращении этой функции получает строку сцепленного пути. Это та же строка, на которую указывает pszPathOut. Если эта функция не возвращается успешно, это значение равно NULL.

Комментарии

Путь к каталогу должен иметь вид A:, B:, ..., Z:. Путь к файлу должен быть указан в правильной форме, представляющей часть пути с именем файла. Если путь к каталогу заканчивается обратной косой чертой, обратная косая черта будет сохранена. Обратите внимание, что хотя lpszDir и lpszFile являются необязательными параметрами, они не могут иметь значение NULL.

Примеры

#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

int main( void )
{
// Buffer to hold combined path.
char buffer_1[MAX_PATH] = "";
char *lpStr1;
lpStr1 = buffer_1;

// String for balance of path name.
char buffer_2[ ] = "One\\Two\\Three";
char *lpStr2;
lpStr2 = buffer_2;

// String for directory name.
char buffer_3[ ] = "C:";
char *lpStr3;
lpStr3 = buffer_3;

cout << "The file path to be combined is  " 
     << lpStr2 << endl;
cout << "The directory name path is       " 
     << lpStr3 << endl;
cout << "The combined path is             " 
     << PathCombine(lpStr1,lpStr3,lpStr2) << endl;
}

------------
INPUT:
------------
Path for directory part: "C:"
Path for file part: "One\Two\Three"
------------
OUTPUT:
------------
The file path to be combined is  One\Two\Three
The directory name path is       C:
The combined path is             C:\One\Two\Three

Примечание

Заголовок shlwapi.h определяет PathCombine как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header shlwapi.h
Библиотека Shlwapi.lib
DLL Shlwapi.dll (версия 4.71 или более поздняя)