string查找指定字符并返回其迭代器
时间: 2024-02-03 07:12:21 浏览: 30
可以使用`std::find`函数来查找指定字符,并返回其迭代器。该函数需要传入三个参数,第一个参数是起始迭代器,第二个参数是结束迭代器,第三个参数是要查找的字符。如果找到了该字符,返回指向该字符的迭代器;如果没有找到,返回结束迭代器。
以下是示例代码:
```c++
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string s = "hello world";
auto iter = std::find(s.begin(), s.end(), 'o');
if (iter != s.end()) {
std::cout << "Found character 'o' at position " << iter - s.begin() << std::endl;
} else {
std::cout << "Character 'o' not found" << std::endl;
}
return 0;
}
```
输出结果为:Found character 'o' at position 4。
相关问题
string查找指定字符出现的所有位置并返回他们迭代器
可以使用 std::find 函数来查找指定字符在字符串中出现的位置,并使用循环查找所有出现的位置。具体实现如下:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "hello world";
char ch = 'l';
auto it = str.begin();
while ((it = std::find(it, str.end(), ch)) != str.end()) {
std::cout << "Found at position: " << std::distance(str.begin(), it) << std::endl;
++it;
}
return 0;
}
```
上面的代码中,使用 `std::find` 函数查找字符 `'l'` 在字符串 `str` 中出现的位置,并将结果赋值给迭代器 `it`。查找过程使用了循环,每次找到一个位置后,将迭代器 `it` 向后移动一位,以便查找下一个位置。
输出结果为:
```
Found at position: 2
Found at position: 3
Found at position: 9
```
这表示字符 `'l'` 在字符串中出现的位置分别为第 2、3 和 9 个字符。
迭代器 string
迭代器是一种用于遍历容器中元素的对象。在C++中,string是一个容器类,可以存储和操作字符串。string类提供了多种迭代器来访问和操作字符串中的字符。
在C++中,string类提供了以下几种迭代器:
1. begin()和end():begin()函数返回一个指向字符串第一个字符的迭代器,end()函数返回一个指向字符串最后一个字符之后位置的迭代器。通过这两个迭代器可以遍历整个字符串。
2. rbegin()和rend():rbegin()函数返回一个指向字符串最后一个字符的迭代器,rend()函数返回一个指向字符串第一个字符之前位置的迭代器。通过这两个迭代器可以逆序遍历整个字符串。
3. cbegin()和cend():这两个函数与begin()和end()函数功能相同,但返回的是常量迭代器,不能用于修改字符串中的字符。
4. crbegin()和crend():这两个函数与rbegin()和rend()函数功能相同,但返回的是常量逆序迭代器。
使用迭代器可以通过循环遍历字符串中的每个字符,并进行相应的操作。例如,可以使用迭代器来查找特定字符、替换字符、插入字符等。