本文以C++代码的形式,展现了如何分割字符串对象。
源码
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
void printVec(vector<string> &res)
{
for (size_t i = 0; i < res.size(); i++)
{
cout << i << ":" << res[i] << endl;
}
}
void splitString2Vector1(string &v, vector<string> &res)
{
string tmp;
for( size_t i = 0; i < v.size(); i++)
{
tmp += v[i];
if (v[i] == ',')
{
res.push_back(tmp.substr(0, tmp.size()-1));
tmp = "";
}
else if (i == v.size() - 1)
{
res.push_back(tmp);
}
}
printVec(res);
}
void splitString2Vector2(stringstream &ss, vector<string> &res)
{
string i;
while (std::getline(ss, i, ','))
{
res.push_back(i);
}
printVec(res);
}
int main(int argc, char* argv[])
{
string v = "iPhone 6,iphone 6s,iPhone 7, 中兴, 华为, 小米, 三星, OPPO, VIVO, 魅族, 360";
vector<string> res;
cout << "Method 1" << endl;
splitString2Vector1(v, res);
res.clear();
cout << "------------------" << endl;
cout << "Method 2" << endl;
std::stringstream ss(v);
splitString2Vector2(ss, res);
return 0;
}
运行结果
Method 1
0:iPhone 6
1:iphone 6s
2:iPhone 7
3: 中兴
4: 华为
5: 小米
6: 三星
7: OPPO
8: VIVO
9: 魅族
10: 360
------------------
Method 2
0:iPhone 6
1:iphone 6s
2:iPhone 7
3: 中兴
4: 华为
5: 小米
6: 三星
7: OPPO
8: VIVO
9: 魅族
10: 360
请按任意键继续. . .