前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++字符串分割

c++字符串分割

作者头像
用户6021899
发布2021-07-05 15:42:11
1K0
发布2021-07-05 15:42:11
举报
文章被收录于专栏:Python编程 pyqt matplotlib

c++练习。

实现的功能是根据分割符将字符串分割成多个字符串,存进堆上的vector容器中。

头文件stringFunctions.h中定义分割函数:

代码语言:javascript
复制
#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函数中:

代码语言:javascript
复制
#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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档