今天在使用C++时,遇到了一个问题,要把读到vector中的字符串按特定的标识符来分割,方便之后的使用。
在解决这一问题时主要用到了find和substr这两个函数,分割字符串函数代码如下:
vector<string> splitWithStl(const string str, const string part)
{
vector<string> resVec;
if ("" == str)//若为空,则返回原字符串
{
return resVec;
}
//方便截取最后一段数据
string strs = str + part;
size_t pos = strs.find(part);//find函数的返回值,若找到分隔符返回分隔符第一次出现的位置,
//否则返回npos
//此处用size_t类型是为了返回位置
size_t size = strs.size();
while (pos != string::npos)
{
string x = strs.substr(0, pos);//substr函数,获得子字符串
resVec.push_back(x);
strs = strs.substr(pos + 1, size);
pos = strs.find(part);
}
return resVec;
}
做个试验:
int main()
{
string s = "111,222,333,444";
vector<string> s1=splitWithStl(s, ",");
for (int i = 0; i < s1.size(); i++)
{
cout << s2[i]<<" ";
}
system("pause");
}
输出结果如下:
这就按特定标识符把字符串分割开了。