📅  最后修改于: 2023-12-03 15:29:52.815000             🧑  作者: Mango
当我们需要在一个字符串中查找某个子串的所有出现位置时,可以使用C++的STL库提供的函数find()和substr()来实现。具体步骤如下:
以下是示例代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<int> findSubstring(string s, string subStr) {
vector<int> indexes; // 存储所有出现位置
size_t start = 0; // 起始查找位置
while (true) {
size_t index = s.find(subStr, start); // 查找子串位置
if (index == string::npos) { // 查找完毕
break;
}
indexes.push_back(index); // 记录索引位置
start = index + 1; // 起始查找位置调整到当前位置+1
}
return indexes; // 返回记录的索引位置
}
int main() {
string s = "This is a test string to test the findSubstring function.";
string subStr = "test";
vector<int> indexes = findSubstring(s, subStr);
cout << "Indexes of \"" << subStr << "\" in \"" << s << "\":";
for (int i = 0; i < indexes.size(); i++) {
cout << " " << indexes[i];
}
cout << endl;
return 0;
}
这段代码将在原字符串"This is a test string to test the findSubstring function."
中查找子串"test"
的所有出现位置,并将它们存储在一个vector
Indexes of "test" in "This is a test string to test the findSubstring function.": 10 29
代码片段如下:
vector<int> findSubstring(string s, string subStr) {
vector<int> indexes; // 存储所有出现位置
size_t start = 0; // 起始查找位置
while (true) {
size_t index = s.find(subStr, start); // 查找子串位置
if (index == string::npos) { // 查找完毕
break;
}
indexes.push_back(index); // 记录索引位置
start = index + 1; // 起始查找位置调整到当前位置+1
}
return indexes; // 返回记录的索引位置
}