<span style="font-size:18px;">#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> split(string str,string pattern)
{
string::size_type pos;
vector<string> result;
str+=pattern;//扩展字符串以方便操作
string::size_type size=str.size();
for(string::size_type i=0; i<size; i++)
{
pos=str.find(pattern,i); //find的用法,返回一个size_type,及pattern的位置
if(pos<size)
{
string s=str.substr(i,pos-i);
result.push_back(s);
i=pos+pattern.size()-1; //pattern.size()这个是为了防止多个出现的情况
}
}
return result;
}
int main()
{
string a = "abcde fgeh ijkl";
vector<string> vec;
vec = split(a, "ge");
vector<string>::iterator iter = vec.begin();
for( ; iter!=vec.end(); iter++)
cout<<*iter<<endl;
return 0;
}</span></span>
string类的查找函数:
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
//查找成功时返回所在位置,失败返回string::npos的值
int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置
int rfind(const char *s, int pos = npos) const;
int rfind(const char *s, int pos, int n = npos) const;
int rfind(const string &s,int pos = npos) const;
//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
int find_first_of(char c, int pos = 0) const;//从pos开始查找字符c第一次出现的位置
int find_first_of(const char *s, int pos = 0) const;
int find_first_of(const char *s, int pos, int n) const;
int find_first_of(const string &s,int pos = 0) const;
//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos
int find_first_not_of(char c, int pos = 0) const;
int find_first_not_of(const char *s, int pos = 0) const;
int find_first_not_of(const char *s, int pos,int n) const;
int find_first_not_of(const string &s,int pos = 0) const;
//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos
int find_last_of(char c, int pos = npos) const;
int find_last_of(const char *s, int pos = npos) const;
int find_last_of(const char *s, int pos, int n = npos) const;
int find_last_of(const string &s,int pos = npos) const;
int find_last_not_of(char c, int pos = npos) const;
int find_last_not_of(const char *s, int pos = npos) const;
int find_last_not_of(const char *s, int pos, int n) const;
int find_last_not_of(const string &s,int pos = npos) const;
//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找
<span style="font-size:18px;">#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> split(string str,string pattern)
{
string::size_type pos;
vector<string> result;
str+=pattern;//扩展字符串以方便操作
string::size_type size=str.size();
for(string::size_type i=0; i<size; i++)
{
pos=str.find(pattern,i); //find的用法,返回一个size_type,及pattern的位置
if(pos<size)
{
string s=str.substr(i,pos-i);
result.push_back(s);
i=pos+pattern.size()-1; //pattern.size()这个是为了防止多个出现的情况
}
}
return result;
}
int main()
{
string a = "abcde fgeh ijkl";
vector<string> vec;
vec = split(a, "ge");
vector<string>::iterator iter = vec.begin();
for( ; iter!=vec.end(); iter++)
cout<<*iter<<endl;
return 0;
}</span></span>
功能:从一个字符串复制一个从指定位置开始,并具有指定长度的子字符串。