一个字符串被相同子字符串分隔,怎么将其切割呢,是不是有很多初学者有遇到这些问题呢?直接上代码吧。。。
#include <iostream>
#include <cstring>
#include <vector>
#include "mysplit.h"
using namespace std;
vector<char*> mySplit(char* str,const char* delims)
{
vector<char*> res;
char* result = NULL;
result = strtok(str,delims);
while(result != NULL)
{
res.push_back(result);
result = strtok(NULL,delims);
}
return res;
}
其中主要是用到了strtok函数,我们来看看其原型;
#include <string.h> char *strtok( char *str1, const char *str2 ); |
功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。之后所以的调用str1 都应为NULL。
string库里面有很多字符串处理的函数,也许字符串分割方式有很多,在这里送上我的分割方式,供大家参考;
str是要分割的字符串,delims是分隔的子字符串;
返回值是将分割的子字符串存放在类似数组的容器;
调用方式如下:
#include <iostream>
#include <vector>
#include "mysplit.h"
using namespace std;
int main(int argc,char** argv)
{
vector<char*> str;
char res[100],de[10];
int i;
cout<<"input character:";
cin>>res;
cout<<"input delimt:";cin>>de;
str = mySplit(res,de);
for(i=0;i<str.size();i++)cout<<str[i]<<endl;
return 0;
}
希望能解决您的问题。。。