std::string中find接口
时间: 2023-07-31 14:10:38 浏览: 171
std::string中的find函数可以用于在字符串中查找指定的子串。find函数有多个重载版本,可以根据不同的需求进行使用。
下面是一个常用的find函数的例子:
```c++
std::string str = "hello world";
std::string sub_str = "world";
// 查找子串在字符串中第一次出现的位置
size_t pos = str.find(sub_str);
if (pos != std::string::npos) {
std::cout << "子串在字符串中第一次出现的位置为:" << pos << std::endl;
} else {
std::cout << "子串未在字符串中找到" << std::endl;
}
```
其中,pos存储了子串在字符串中第一次出现的位置。如果子串未在字符串中找到,则pos的值为std::string::npos。
find函数的另一个重载版本可以指定搜索的起始位置和搜索的长度:
```c++
std::string str = "hello world";
std::string sub_str = "l";
size_t pos = 3;
// 从指定位置开始查找子串
size_t index = str.find(sub_str, pos);
if (index != std::string::npos) {
std::cout << "子串从指定位置开始第一次出现的位置为:" << index << std::endl;
} else {
std::cout << "子串未在字符串中找到" << std::endl;
}
// 从指定位置开始指定长度查找子串
size_t len = 3;
size_t index2 = str.find(sub_str, pos, len);
if (index2 != std::string::npos) {
std::cout << "子串从指定位置开始指定长度第一次出现的位置为:" << index2 << std::endl;
} else {
std::cout << "子串未在字符串中找到" << std::endl;
}
```
需要注意的是,如果指定的起始位置超出了字符串的长度,则会抛出std::out_of_range异常。
阅读全文