C++按特定分隔符将字符串分割——实现

方法1. 使用string类的内置函数

该方法的代码如下:

void stringToken(const string sToBeToken, const string sSeperator, vector<string>& vToken)
{
    string sCopy = sToBeToken;
    int iPosEnd = 0;
    while (true)
    {
        iPosEnd = sCopy.find(sSeperator);
        if (iPosEnd == -1 )
        {
            vToken.push_back(sCopy);
            break;
        }
        vToken.push_back(sCopy.substr(0, iPosEnd));
        sCopy = sCopy.substr(iPosEnd + 1);
    }
}

函数的形参表中,vToken为输出的子串组。
==当在 find() 函数找不到我们指定的分隔符的时候,返回值为 -1 ==。

方法2. 使用CString的内置函数

该方法比较复杂,需包含cstring头文件。函数代码如下:

void stringToken(string sLine, const char* pSeperator, vector<char*>& vToken)
{
    char* cstr = new char[sLine.length()+1];
    strcpy(cstr, sLine.c_str());
    char*p=strtok(cstr, pSeperator);
    vToken.push_back(p);
    while(p)
    {
        p=strtok(NULL, pSeperator);
        if(!p)
            break;
        vToken.push_back(p);
    }
}

总结

两种方法一种是使用c_string里的 strcpy(字符数组拷贝) 和 strtok(字符数组分割),一种是使用C++的 string 类的 find() 和 substr() 。
第一种方法返回的是string对象的集合,第二种方法返回的是字符数组的集合。两种方法都能直接使用,请读者自行取舍。

如果对你有用,不妨点个赞~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geocat

球球大佬们赏赐点吃喝!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值