How to split string in C++(分割字符串)

本文以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
请按任意键继续. . .

参考

How to use stringstream to separate comma separated strings

猜你喜欢

转载自blog.csdn.net/tianzhaixing/article/details/75044228