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


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

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

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

Синтаксис

LPSTR PathCombineA(
  [out]          LPSTR  pszDest,
  [in, optional] LPCSTR pszDir,
  [in]           LPCSTR 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"

void 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 Профессиональный, Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка shlwapi.h
библиотеки Shlwapi.lib
DLL Shlwapi.dll (версия 4.71 или более поздняя)