或许你和我一样,无法分割字符串,于是你就点入了一个文章,但依然没搞懂。今天,我编出来了一个简易的字符分割,但返回的不是数组。
原理:C库中有一个strtok的函数,专门分割出第几个字符集,原型如下
char *strtok (char *, const char *);
例子如下
#include <string>
#include <iostream>
using namespace std;
int main(){
char* toSplitChar = (char*)"abc def";
char* token = strtok(toSplitChar," ");
cout << token;
token = strtok(NULL," "); //NULL会使指针转向上一次分出来剩下的值的下个段落,此时有两个
cout << token;
return 0;
};
/*************
* 返回结果 *
* abc *
* def *
*************/
于是:利用c_str和string()方法变换类型,并返回string型的东西,代码如下
#include <string>
#include <cstring>
using namespace std;
//此函数用strtok方法,
string StringSplit(string TODO,string SPLITSTR,int TODOCHARNUM){
//获得Char型的被分隔值
char* toDoChar = (char*)TODO.c_str();
//获得Char型的分隔值
const char* splitStrChar = SPLITSTR.c_str();
//隔出后的暂存点
char* token;
int tokenCharNum;
//分割 @1 18line @2 21line
//第一个
token = strtok(toDoChar,splitStrChar);
//剩下的
for (int i = 1;i < TODOCHARNUM;i++){
token = strtok(NULL,splitStrChar);
};
string RETURNSTR = string(token);
return RETURNSTR;
};