c++ 获取路径和文件名
时间: 2025-02-20 21:45:15 浏览: 117
### C++ 中获取文件路径和文件名的方法
#### 方法一:使用 `<filesystem>` 库
现代 C++ 提供了标准库 `<filesystem>` 来处理文件系统操作。通过 `std::filesystem::path` 可以方便地解析路径。
```cpp
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
std::string filename = "C:\\MyDirectory\\MyFile.bat";
// 创建路径对象
fs::path p(filename);
// 获取带扩展名的文件名
std::cout << "Filename with extension: " << p.filename().string() << '\n';
// 获取不带扩展名的文件名
std::cout << "Filename without extension: " << p.stem().string() << '\n';
}
```
此方法适用于支持 C++17 或更高版本的编译器[^1]。
#### 方法二:使用 `_splitpath_s` 函数
对于较旧的标准,可以采用 `_splitpath_s` 函数来分割路径成分。需要注意的是,在实际应用中应确保传入参数的有效性和安全性。
```cpp
#include <stdio.h>
#include <stdlib.h>
void splitPath(const char* filePath) {
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
errno_t err = _splitpath_s(filePath, drive, sizeof(drive), dir, sizeof(dir),
fname, sizeof(fname), ext, sizeof(ext));
if (err == 0) {
printf("Drive: %s\nDir: %s\nFilename: %s\nExtension: %s\n",
drive, dir, fname, ext);
}
}
int main() {
const char* filepath = "C:\\MyDirectory\\MyFile.bat";
splitPath(filepath);
}
```
这种方法依赖于 Windows 平台特有的 API,并且需要包含相应的头文件[^3]。
阅读全文
相关推荐
















