c++练习。
实现的功能是根据分割符将字符串分割成多个字符串,存进堆上的vector容器中。
头文件stringFunctions.h中定义分割函数:
#ifndef STRINGFUNCTIONS_H_INCLUDED
#define STRINGFUNCTIONS_H_INCLUDED
#include <vector>
using namespace std;
vector<char*> * split(char* str, char separator='\t')
{
vector<char*> *vp = new vector<char*>;
char *str1 = str;
int n = 0;
int left = 0;
while(*str1 != '\0')
{
if(*str1 == separator)
{
// cout << n << endl;
for(int i=n-1; i>=left; i--) str1--;
// cout<< str1<<endl;
//char a[n-left+1];
char *a = new char[n-left+1]; //vector 在堆上,添加数组时只能添加堆上的数组
a[n-left]='\0';
for(int i=left+1; i<=n; i++)
{
a[i-left-1] = *str1;
str1++;
}
// for(int i = 0; i < int(sizeof(a)/sizeof(a[0]))-1; i++)
// {
// cout<<a[i]<<",";
// }
// cout<<endl;
(*vp).push_back(a);
left = n+1;
}
str1++;
n++;
}
if(left!=0)
{
//char a[n-left+1];
char *a = new char[n-left+1];
a[n-left]='\0';
for(int i=n-1; i>=left; i--) str1--;
for(int i=left; i<n; i++)
{
a[i-left] = *str1++;
}
(*vp).push_back(a);
// for(int i = 0; i < int(sizeof(a)/sizeof(a[0]))-1; i++)
// {
// cout<<a[i]<<",";
// }
// cout<<endl;
}
return vp;
}
#endif // STRINGFUNCTIONS_H_INCLUDED
测试用法部分写在main函数中:
#include <iostream>
#include "stringFunctions.h"
using namespace std;
int main()
{
char a[1024] = "镜湖三百里/菡萏发荷花/五月西施采/人看隘若耶/回舟不待月/归去越王家";
cout << sizeof(a)/sizeof(a[0])<< endl;
//vector<char*> * vp = split(a,',');
vector<char*> * vp = split(a,'/');
for(vector<char*>::iterator it=(*vp).begin(); it!=(*vp).end(); it++)
{
char* a = *it;
while(*a)
{
cout<<*a;
a++;
}
cout<<endl;
}
delete vp;
return 0;
}
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!