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


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

Анализирует путь и возвращает часть этого пути, которая следует первой обратной косой черте.

Синтаксис

LPCWSTR PathFindNextComponentW(
  [in] LPCWSTR pszPath
);

Параметры

[in] pszPath

Тип: PTSTR

Указатель на строку, завершающую значение NULL, содержащую путь для синтаксического анализа. Эта строка не должна быть длиннее MAX_PATH символов, а также завершающегося символа NULL. Компоненты пути разделены обратными косыми чертами. Например, путь "c:\path1\path2\file.txt" имеет четыре компонента: c:, path1, path2 и file.txt.

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

Тип: PTSTR

Возвращает указатель на строку, завершающую значение NULL, содержащую усеченный путь.

Если pszPath указывает на последний компонент пути, эта функция возвращает указатель на завершающий символ NULL.

Если pszPath указывает на завершающий символ NULL или если вызов завершается ошибкой, эта функция возвращает NULL.

Замечания

PathFindNextComponent проходит строку пути, пока не будет обнаружена обратная косая черта ("\"), игнорирует все до этой точки, включая обратную косую черту, и возвращает остальную часть пути. Таким образом, если путь начинается с обратной косой черты (например, \path1\path2), функция просто удаляет начальную обратную косую черту и возвращает остальную черту (path1\path2).

Примеры

Следующее простое консольное приложение передает различные строки для PathFindNextComponent, чтобы продемонстрировать, что функция распознает как компонент пути и показать, что возвращается. Чтобы запустить этот код в Visual Studio, необходимо связаться с Shlwapi.lib и определить ЮНИКОД в командах препроцессора в параметрах проекта.


#include <windows.h>
#include <iostream>
#include <shlwapi.h>

#pragma comment(lib, "shlwapi.lib")     // Link to this file.

int main()
{
    using namespace std;
   
    PCWSTR path = L"c:\\path1\\path2\\file.txt";
 
    // This loop passes a full path to PathFindNextComponent and feeds the 
    // results of that call back into the function until the entire path has
    // been walked.
    while (path)
    {
        PCWSTR oldPath = path;
        path = PathFindNextComponent(path);
 
        // The path variable pointed to the terminating null character.
        if (path == NULL)
        {
            wcout << L"The terminating null character returns NULL\n\n";
        }
        // The path variable pointed to a path with only one component.
		else if (*path == 0)
        {
            wcout << L"The path " << oldPath 
                  << L" returns a pointer to the terminating null character\n"; 
        }
        else 
        {
            wcout << L"The path " << oldPath << L" returns " << path << L"\n";
        }
    }
 
    // These calls demonstrate the results of different path forms.
    // Note that where those paths begin with backslashes, those
    // backslashes are merely stripped away and the entire path is returned.

    PCWSTR path1 = L"\\path1";

    wcout << L"The path " << path1 << L" returns " 
          << PathFindNextComponent(path1);
        
    PCWSTR path2 = L"\\path1\\path2";

    wcout << L"\nThe path " << path2 << L" returns "
          << PathFindNextComponent(path2);
        
    PCWSTR path3 = L"path1\\path2";
 
    wcout << L"\nThe path " << path3 << L" returns "
          << PathFindNextComponent(path3);
 
    wcout << L"\nThe path " << L"c:\\file.txt" << L" returns "
          << PathFindNextComponent(L"c:\\file.txt");
 
    return 0;
}

OUTPUT:
===========
The path c:\path1\path2\file.txt returns path1\path2\file.txt
The path path1\path2\file.txt returns path2\file.txt
The path path2\file.txt returns file.txt
The path file.txt returns a pointer to the terminating null character
The terminating null character returns NULL

The path \path1 returns path1
The path \path1\path2 returns path1\path2
The path path1\path2 returns path2
The path c:\file.txt returns file.txt

Заметка

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

Требования

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