处理文件路径信息是经常要用到的字符串处理的手段,应用场景非常的多,不论是 Linux 还是 Windows,在我没接触这一系列函数之前,都是使用一系列字符串处理函数来自己写。而在 Windows 环境下,系统给我们提供了一系列处理路径相关的 API,我们在需要使用的时候直接调用即可,不但可以避免自己使用字符串处理函数处理时可能造成的各种问题,还可以加快我们编程的速度。当然如果你还没有使用字符串处理函数自己处理过路径等信息,我强烈建议你先自己尝试学习一下。轮子可不重复制造,但你必须要清楚轮子的制作工艺,否则在出现故障时就不知道如何处理了。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include <Shlwapi.h>
#include <iostream>

using namespace std;

#ifdef _UNICODE
#define tout wcout
#else
#define tout cout
#endif

#pragma comment(lib, "Shlwapi.lib")

int _tmain(int argc, _TCHAR* argv[])
{
// 获取程序自身的路径
TCHAR szFilePath[MAX_PATH] = {0};
GetModuleFileName(NULL, szFilePath, MAX_PATH);

// 打印完整路径
tout << szFilePath << endl;

// 去掉文件名
PathRemoveFileSpec(szFilePath);
tout << szFilePath << endl;

// 追加一个文件名
PathAppend(szFilePath, _T("test.dll"));
tout << szFilePath << endl;

// 获取文件名
tout << PathFindFileName(szFilePath) << endl;

// 获取文件后缀名
tout << PathFindExtension(szFilePath) << endl;

getchar();
return 0;
}

示例代码中仅仅介绍了一些经常用到的 API,其中还有很多关于路径相关的处理函数。我一时没找到这一系列函数在 MSDN 的页面,大家使用时可以在 VS 中按 F1 跟着找一下其他的函数。