c++判断 string 是否包含某子串,有的话返回所有子串
时间: 2024-10-06 20:00:36 浏览: 37
在C++中,你可以使用`find()`函数或者`substr()`函数配合循环来检测字符串`string`是否包含特定的子串,并找到所有的子串。这里有一个基本的示例:
```cpp
#include <iostream>
#include <string>
std::vector<std::string> find_substrings(const std::string& main_str, const std::string& substr) {
std::vector<std::string> substrings;
size_t index = main_str.find(substr);
while (index != std::string::npos) {
// 如果找到了子串,添加到结果集合
substrings.push_back(main_str.substr(0, index));
// 更新查找起始位置,继续寻找下一个子串
index = main_str.find(substr, index + substr.length());
}
return substrings;
}
int main() {
std::string main_str = "Hello, world! This is a test string.";
std::string substr = "is";
std::vector<std::string> found_substrings = find_substrings(main_str, substr);
if (!found_substrings.empty()) {
for (const auto& sub : found_substrings) {
std::cout << "Substring found: " << sub << "\n";
}
} else {
std::cout << "Substring not found.\n";
}
return 0;
}
```
在这个例子中,`find_substrings`函数首先初始化一个空的`substrings`向量,然后在一个循环中查找主字符串`main_str`中第一次出现`substr`的位置。每次找到后,它会将从开始到这个位置的部分作为子串加入结果,然后更新查找的起始位置。
阅读全文