算法随笔-根据指定分隔符分割字符串

    新的一年到来,第一周总是没什么状态,就随便写写简单的一些算法,今天就来实现一个字符串分割。
    需求为:根据指定分割符,分割字符串,并将分割好的各个子串存入vector向量中。

举例:假如存在字符串char str[] = "123,456,789,abc,def",那么按逗号','作为分割符,最终vector向量中的内容便为:vector<string> result  = {"123", "456", "789", "abc", "def"}

代码实现起来比较简单,就不做什么分析了,下边直接贴代码:

#include <stdio.h>
#include <vector>
#include <string>
#include <iostream>
#include <string.h>
#include <assert.h>

using namespace std;

//字符串分割函数
/*
* src:待分割的字符串
* splite:分割符
* result: 存放分割结果
*/
void SpliteStr(const char* src, char splite, vector<string>& result)
{
    assert(src);

    string str;
    char szBuf[256] = {0};
    char szTmp[128] = {0};
    char *pc = NULL;
    bool isFound = false;

    strncpy(szBuf, src, strlen(src));

    while(1)
    {
        pc = NULL;
        pc = strchr(szBuf, splite);
        if(!pc)
        {
            break;
        }
        isFound = true;

        memset(szTmp, 0, sizeof(szTmp));
        strncpy(szTmp, szBuf, pc-szBuf);
        strcpy(szBuf, pc+1);
        szTmp[strlen(szTmp)] = '\0';
        szBuf[strlen(szBuf)] = '\0';
        str = szTmp;
        result.push_back(str);
    }

    if(isFound && (strlen(szBuf)>0))
    {
        str = szBuf;
        result.push_back(str);
    }
}

//main函数,用于验证字符串分割功能
int main(int argc, char* argv[])
{
    char testStr[] = "123,456,789,abc,def";

    vector<string> result;
    SpliteStr(testStr, ',', result);

    vector<string>::iterator iter;

    for(iter=result.begin(); iter!=result.end(); iter++)
    {
        cout << *iter << endl;
    }
    return 0;
}

使用g++编译一下,执行便能得到我们想要的效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值