【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; }
代码执行结果:


浙公网安备 33010602011771号