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,並在專案設定的預處理器命令中定義 UNICODE。
#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 標頭會根據 UNICODE 預處理器常數的定義,將 PathFindNextComponent 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional、Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | shlwapi.h |
連結庫 | Shlwapi.lib |
DLL | Shlwapi.dll (4.71 版或更新版本) |