【发布时间】:2014-04-14 13:49:15
【问题描述】:
我想使用函数搜索或其他类似函数来查找给定模式的多次出现。
这是我的代码:
#include <cstring>
#include <iostream>
#include <iomanip>
#include <set>
#include <list>
#include <vector>
#include <map>
#include <algorithm>
#include <functional>
using namespace std;
int main () {
std::vector<int> haystack;
string a = "abcabcabc";
string b = "abc";
string::iterator it;
it = search(a.begin(),a.end(),b.begin(),b.end());
if(it!=a.end()){
cout << it-a.begin()<<endl;
}
return 0;
}
此代码返回 0 作为模式 "abc" 的第一次出现,想要返回 0、3、6。这将是模式开始的原始字符串中的所有索引。
感谢您的帮助。
【问题讨论】:
-
你需要一个循环,它应该在
it == a.end()时完成。你尝试了什么?您没有使用a.find有什么特别的原因吗?