【C/C++】字符串分割

实现一个类似QT、C#中的split()和C语言<string.h>中提供的strtok()函数的功能,目前该功能只能通过字符来分割字符串。(关于二级指针的释放,代码中可能存在有问题,还望大佬能够指正)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;

char** stringCut(const char* str, const char ch, int& strcount)
{
    int amount = 0;
    int    sum = 0;
    int kkk = 0;
    int neicun = 0;
    char** temp;    //二级指针
    //字符串的长度获取
    int lenth = strlen(str) + 1;
    //找出字符串内指定分割字符个数
    for (int i = 0; i < lenth; i++)
    {
        if (str[i] == ch)
        {
            neicun++;
        }
    }
    //二级指针分配内存大小
    temp = new char* [neicun + 1];
    while (lenth-- > 0)
    {
        //开始分割字符串,查找到结束符后,将最后一段字符串存入指针
        if (str[amount] == ch || str[amount] == '\0')
        {
            //一级指针分匹配内存
            temp[strcount] = new char;
            for (int i = sum; i < amount; i++)
            {
                temp[strcount][kkk++] = str[i];
            }
            kkk = 0;
            temp[strcount][amount - sum] = '\0';
            strcount++;
            sum = amount + 1;
        }
        amount++;
    }
    return temp;
}

int main() { char array[100] = "久,哥,的,博,客,园"; int num = 0; char** str = new char*; str = stringCut(array, ',', num); for (int i = 0; i < num; i++) { cout << str[i] << endl; }   for (int i = 0; i < num; i++)
 {
     delete[] str[i];

  }
delete[] str; return 0; }

代码执行结果:

 

posted @ 2021-12-23 14:08  久哥0522  阅读(66)  评论(0)    收藏  举报