如何在C++中正确地解析并获取文件路径中不包含后缀部分的文件名?
时间: 2024-12-17 17:17:45 浏览: 8
在C++中,你可以使用`std::string`的操作函数来解析文件路径并获取不包含后缀部分的文件名。通常,文件名会出现在路径的最后一个斜杠后面。以下是一个基本的例子:
```cpp
#include <string>
std::string getFileNameWithoutExtension(const std::string& filePath) {
// 找到最后的斜杠
size_t slashPos = filePath.rfind("/") + 1;
// 如果没有找到斜杠,则假设路径本身就是文件名
if (slashPos == std::string::npos) {
return filePath;
}
// 找到第一个点(表示可能的扩展名开始)
size_t dotPos = filePath.find(".", slashPos);
// 如果找不到点,或者点在最后一个字符之后(即路径只有一个点),那么返回整个字符串
if (dotPos == std::string::npos || dotPos == filePath.size()) {
return filePath.substr(0, slashPos);
} else {
// 返回文件名部分(直到找到的第一个点前)
return filePath.substr(0, dotPos);
}
}
```
这个函数首先查找最后一个斜杠,然后尝试找到其后的点(如果存在)。如果点不存在或者路径仅由一个点组成,它就认为整个字符串都是文件名。如果找到了点,它将截取从开始到点之前的部分作为文件名。
阅读全文