std::string 如何判断是否包含字符串
时间: 2024-10-17 17:12:59 浏览: 49
在C++标准库中,`std::string` 类型有一个成员函数 `contains()` 或者 `find()` 可用于检查一个字符串是否包含另一个子串。这里我们通常使用 `find()` 函数:
```cpp
#include <string>
bool contains(const std::string& str主体, const std::string& substr搜索) {
return (str.find(substr) != std::string::npos);
}
```
如果 `find()` 返回的结果不是 `std::string::npos`,表示找到了子串,返回值就是子串在主体中的起始位置;反之,如果没有找到,返回 `npos`,此时函数会返回 `false` 表示不包含。
如果你想得到更详细的错误处理,可以捕获异常:
```cpp
bool contains(const std::string& str, const std::string& substr) {
try {
str.find(substr);
return true;
} catch (const std::out_of_range&) {
return false;
}
}
```
相关问题
std::string如何判断是否为空字符串
可以使用`empty()`函数判断`std::string`是否为空字符串,该函数返回一个`bool`类型的值,如果字符串为空,则返回`true`,否则返回`false`。例如:
```c++
std::string str = "";
if(str.empty()){
std::cout << "字符串为空" << std::endl;
} else {
std::cout << "字符串不为空" << std::endl;
}
```
输出结果为:`字符串为空`
std::string 判断是否包含 另一个字符串
判断一个std::string是否包含另一个std::string最简单的方法是使用find函数。您可以使用find函数来搜索需要查找的子字符串。如果find函数返回一个字符串中的位置,则表示该字符串包含被搜索的子字符串。例如:
```cpp
std::string str = "Hello World!";
std::string subStr = "World";
if(str.find(subStr) != std::string::npos) {
std::cout << "The string contains the substring." << std::endl;
}
```
在上面的示例中,如果字符串“World”包含在字符串“Hello World!”中,则输出“The string contains the substring.”。
如果find函数返回std::string::npos,则表示未找到子字符串。在这种情况下,可以做出相应的处理。
```cpp
std::string str = "Hello World!";
std::string subStr = "Goodbye";
if(str.find(subStr) == std::string::npos) {
std::cout << "The string does not contain the substring." << std::endl;
}
```
在上面的示例中,如果字符串“Goodbye”未包含在字符串“Hello World!”中,则输出“The string does not contain the substring.”。
希望我的回答能够帮助到您。
阅读全文