C++字符串分隔方法总结

. 使用stringstreamgetline结合方式

 

#ifndef STRING_SPLIT_H

#define STRING_SPLIT_H

#include <iostream>

#include <vector>

#include <sstream>

//引入命名空间

using namespace std;

//定义成员

vector<string> split(const char *src,const char delimit);

#endif

#include "csplit.h"      //csplit.h是上面定义的头文件

vector<string>  split(const char *src,const char delimit);

{

        stringstream ss(src);

        string sub_str;

        vector<string> vec;

        while(getline(ss,sub_str,'|'))

        {

                cout << sub_str << endl;

                vec.push_back(sub_str);

        }

        return  vec;

}

 

二、使用c语言中的strtok()方法

 

#include <iostream>

#include <cstring>

#include <vector>

using namespace std;

int main()

{

        vector<string> vec;

        string str("a|b|c d");

        //因为是运行时确定大小,所以必须从堆分配内存,然后用指针指向它

        char *buf  = new char[str.length()+1];

        //strcpy方法需要的是二个字符串指针,而不是string类型,所以c_str方法就能完成从字符串向字符指针的转换

        strcpy(buf,str.c_str());

        buf[str.length()] = '\0';

        char *tmp;

        tmp = strtok(buf,"| ");

        while(tmp != NULL)

        {

                vec.push_back(tmp);

                tmp = strtok(NULL,"| ");

        }

        cout << vec.size() << endl;

 

delete []buf;

        return 0;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值