c++ string.find()存在多个符合
时间: 2024-02-28 19:29:45 浏览: 458
`string::find()` 方法返回第一个匹配子字符串的位置,如果没有找到则返回 `string::npos`。如果你想查找字符串中所有符合条件的子字符串,可以使用一个循环和 `string::find()` 方法来不断查找。每次找到匹配子字符串后,将其位置加上子字符串长度,然后继续查找下一个匹配子字符串,直到找不到为止。
下面是一个示例代码,可以查找字符串中所有的 `hello` 子字符串:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "hello world, hello c++, hello python";
std::string sub_str = "hello";
std::size_t pos = str.find(sub_str);
while (pos != std::string::npos) {
std::cout << "Found at position " << pos << std::endl;
pos = str.find(sub_str, pos + sub_str.size());
}
return 0;
}
```
输出结果为:
```
Found at position 0
Found at position 13
Found at position 22
```
相关问题
c++中的string.find
在C++中,`std::string`类的`find`成员函数用于在一个字符串中查找子字符串或字符的位置。`find`函数有多个重载版本,可以根据不同的参数类型和位置进行查找。以下是一些常见的用法:
1. **查找子字符串**:
```cpp
std::string str = "Hello, World!";
std::size_t pos = str.find("World");
if (pos != std::string::npos) {
std::cout << "Found at position: " << pos << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
```
2. **从指定位置开始查找**:
```cpp
std::string str = "Hello, World!";
std::size_t pos = str.find("o", 5);
if (pos != std::string::npos) {
std::cout << "Found at position: " << pos << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
```
3. **查找字符**:
```cpp
std::string str = "Hello, World!";
std::size_t pos = str.find('W');
if (pos != std::string::npos) {
std::cout << "Found at position: " << pos << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
```
4. **查找子字符串的另一个重载**:
```cpp
std::string str = "Hello, World!";
std::size_t pos = str.find("World", 0, 5); // 从位置0开始,查找前5个字符
if (pos != std::string::npos) {
std::cout << "Found at position: " << pos << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
```
`find`函数返回子字符串或字符在字符串中首次出现的位置,如果未找到则返回`std::string::npos`。
string.find 函数时间复杂度c++
string.find函数是C++中用于在字符串中查找子串的函数。它的时间复杂度为O(n*m),其中n是原字符串的长度,m是要查找的子串的长度。
具体来说,string.find函数会从原字符串的起始位置开始逐个字符地与子串进行比较,直到找到匹配的子串或者遍历完整个原字符串。在最坏情况下,需要比较的次数为n-m+1次,因此时间复杂度为O(n*m)。
需要注意的是,如果要多次查找同一个子串,可以考虑使用KMP算法等更高效的字符串匹配算法来提高查找效率。
阅读全文