以下C++实现一个将字符串拆分以后,存放到一个string当中的代码,使用的时候传入三个参数即可,非常好用:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
using
namespace
std;
#include <vector>
inline
string& lTrim(string &ss)
{
string::iterator p=find_if(ss.begin(),ss.end(),not1(ptr_fun(
isspace
)));
ss.erase(ss.begin(),p);
return
ss;
}
inline
string& rTrim(string &ss)
{
string::reverse_iterator p=find_if(ss.rbegin(),ss.rend(),not1(ptr_fun(
isspace
)));
ss.erase(p.base(),ss.end());
return
ss;
}
inline
string& trim(string &st)
{
lTrim(rTrim(st));
return
st;
}
//将一个以par分割的整个字符串,分割以后存到vec里面
void
splitStr(vector<string> &vec, string str, string par){
string::size_type pos=0,previousPos=0;
//查找到的位置和前一个位置
//处理并没有分割符的情况
if
(str.find(par,0)==string::npos){
if
(!trim(str).empty()) vec.push_back(trim(str));
return
;
}
string strtmp;
for
( pos=str.find(par,0); pos!=string::npos; previousPos=pos+par.size(), pos=str.find(par,pos+par.size()) ){
strtmp = str.substr(previousPos,pos-previousPos);
if
(!trim(strtmp).empty()) vec.push_back(strtmp);
}
strtmp = str.substr(previousPos,pos-previousPos);
if
(!trim(strtmp).empty()) vec.push_back(strtmp);
}
#endif
本函数可以用以下示例调用: