C++常用的string字符串截断函数

C++中经常会用到标准库函数库(STL)的string字符串类,跟其他语言的字符串类相比有所缺陷。这里就分享下我经常用到的两个字符串截断函数:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

//根据字符切分string,兼容最前最后存在字符
void CutString(string line, vector<string> &subline, char a)
{
    //首字母为a,剔除首字母
    if (line.size() < 1)
    {
        return;
    }
    if (line[0] == a)
    {
        line.erase(0, 1);
    }

    size_t pos = 0;
    while (pos < line.length())
    {
        size_t curpos = pos;
        pos = line.find(a, curpos);
        if (pos == string::npos)
        {
            pos = line.length();
        }
        subline.push_back(line.substr(curpos, pos - curpos));
        pos++;
    }

    return;
}

//根据空截断字符串
void ChopStringLineEx(string line, vector<string> &substring)
{
    stringstream linestream(line);
    string sub;

    while (linestream >> sub)
    {
        substring.push_back(sub);
    }
}

int main()
{
    string line = ",abc,def,ghi,jkl,mno,";
    vector<string> subline;
    char a = ',';
    CutString(line, subline, a);
    cout << subline.size()<<endl;
    for (auto it : subline)
    {
        cout << it << endl;
    }

    cout << "-----------------------------" << endl;

    line = "   abc   def   ghi  jkl  mno ";
    subline.clear();    
    ChopStringLineEx(line, subline);
    cout << subline.size() << endl;
    for (auto it : subline)
    {
        cout << it << endl;
    }


    return 0;
}

函数CutString根据选定的字符切分string,兼容最前最后存在字符;函数ChopStringLineEx根据空截断字符串。这两个函数在很多时候都是很实用的,例如在读取文本的时候,通过getline按行读取,再用这两个函数分解成想要的子串。

转载于:https://www.cnblogs.com/charlee44/p/11210009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值