c++标准14,传入一个CString路径,得到路径的最后一个斜杠右边文件名
时间: 2024-09-09 17:05:39 浏览: 15
在C++14中,要从一个`CString`类型的路径中提取最后一个斜杠右边的文件名(不包括斜杠),你可以使用`std::filesystem`库,它是C++17引入的标准库的一部分,但在一些编译器中可能有对C++14兼容的实现。这里是一个示例:
```cpp
#include <filesystem>
#include <string>
std::string getLastFileName(const std::wstring& path) {
// 使用std::filesystem::path解析路径
std::filesystem::path p(path);
// 获取路径的最后部分,即文件名
return p.stem(); // .stem()返回不带扩展名的基础名称
}
// 转换为C++14兼容版本,如果需要的话
std::string getLastFileNameC14(const std::string& path) {
if (std::filesystem::exists(path)) { // 检查路径是否存在
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
std::wstring wpath = converter.from_bytes(path); // 转换为宽字符
return getLastFileName(wpath);
}
else {
throw std::runtime_error("Path does not exist.");
}
}
```
这段代码首先使用`std::filesystem::path`解析输入路径,然后通过`.stem()`获取文件名。注意,对于C++14版本,你需要手动转换`CString`到`std::string`,因为`std::filesystem`不直接支持`CString`。