如何在C++中判断字符串是否以特定字符或子串结尾?
时间: 2024-10-01 20:12:00 浏览: 41
在C++中,你可以使用标准库中的`std::string`类提供的成员函数来检查字符串是否以特定字符或子串结尾。主要有两种方法:
1. **使用`substr()`函数**:
- 首先获取字符串的长度(可以用`length()`或`.size()`)。
- 然后创建一个子串,从原字符串的末尾开始截取直到指定的字符或子串。
- 检查这个子串是否等于你要查找的结束字符或子串。
```cpp
#include <iostream>
#include <string>
bool endsWith(const std::string& str, const std::string& ending) {
if (str.size() < ending.size()) return false;
return str.substr(str.size() - ending.size()) == ending;
}
int main() {
std::string str = "Hello, world!";
if (endsWith(str, "world")) {
std::cout << "The string ends with 'world'." << std::endl;
} else {
std::cout << "The string does not end with 'world'." << std::endl;
}
return 0;
}
```
2. **使用`find_last_of()`函数**:
- 这个函数会在字符串中寻找最后一个出现的指定字符,如果没有找到则返回`npos`。
- 如果找到的字符位置加上1等于字符串的长度,说明字符串以该字符结束。
```cpp
bool endsWith(const std::string& str, char endingChar) {
size_t pos = str.find_last_of(endingChar);
return pos != std::string::npos && pos + 1 == str.length();
}
// 使用方法同上
```
如果你要判断的是单个字符,可以直接用`str[str.length()-1]`访问最后一个字符并与给定的字符进行比较。