|
VC++MFC取得目录路径中的最后一个目录名称
在VC++ MFC中,可以通过 `CString` 类及其成员函数来提取给定路径中的最后一个目录名称。以下是一个简单的示例代码,展示如何实现这一功能:
### 示例代码
- #include <afx.h> // 包含MFC核心和标准组件
- #include <iostream>
- // 获取路径中的最后一个目录名称
- CString GetLastDirectoryName(const CString& path) {
- // 如果路径以反斜杠结尾,则去掉它
- CString trimmedPath = path;
- if (trimmedPath.Right(1) == _T("\") || trimmedPath.Right(1) == _T("/")) {
- trimmedPath = trimmedPath.Left(trimmedPath.GetLength() - 1);
- }
- // 查找最后一个反斜杠的位置
- int lastSlashPos = trimmedPath.ReverseFind(_T('\\'));
- if (lastSlashPos == -1) {
- lastSlashPos = trimmedPath.ReverseFind(_T('/'));
- }
- // 如果找到反斜杠,则返回其后面的子串
- if (lastSlashPos != -1) {
- return trimmedPath.Mid(lastSlashPos + 1);
- }
- // 如果没有找到反斜杠,则返回整个路径(可能是单个目录)
- return trimmedPath;
- }
- int main() {
- CString path = _T("C:\\Users\\ExampleUser\\Documents\\MyFolder\");
- CString lastDir = GetLastDirectoryName(path);
- // 输出最后一个目录名称
- std::wcout << _T("最后一个目录名称是: ") << (LPCTSTR)lastDir << std::endl;
- return 0;
- }
复制代码
### 说明
1. **去掉结尾的反斜杠**:代码首先检查路径是否以反斜杠( `\`)或斜杠(` / `)结尾,如果是,则将其去掉,以确保正确获取最后一个目录名称。
2. **查找最后一个反斜杠**:使用` ReverseFind `函数从字符串的末尾向前查找最后一个反斜杠的位置。
3. **提取最后一个目录名称**:如果找到反斜杠,使用` Mid `函数提取最后一个反斜杠后面的子串,即最后一个目录名称。
4. **返回结果**:如果没有找到反斜杠,则返回整个路径,假设它是一个单独的目录名称。
### 使用示例
可以调用` GetLastDirectoryName `函数并传入一个路径,它将返回最后一个目录名称。` main`函数中的示例演示了如何使用这个函数。
这个方法适用于Windows风格的路径(使用反斜杠)和Unix风格的路径(使用斜杠)。根据你的需求调整路径格式。
|
|