限定语言为C++,在Qt中给定一个QString类型的字符串,依靠+,-,*,/,(,)把字符串进行分割
时间: 2023-06-10 07:06:25 浏览: 120
C++分割字符串的实现
5星 · 资源好评率100%
可以先将QString类型的字符串转换成C语言的字符串,然后通过遍历字符串的每一个字符来进行分割。
具体的实现思路如下:
1. 先定义一个指针p指向字符串的首地址,然后通过while循环遍历整个字符串。
2. 判断当前字符是数字还是操作符。如果是数字,则将指针p向后移动,继续查看下一个字符;如果是操作符,则将当前位置的字符作为一个单独的字符串存储,然后将指针p向后移动。
3. 对于括号,也需要将其作为一个单独的字符串存储。需要额外判断左右括号的数量是否匹配。
4. 分割完成后,将所有的字符串存储到一个数组中,即可实现字符串的分割。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100 // 定义最大字符串长度
char * split(char *str, const char *delim, int *num) {
char *result[MAX_LEN]; // 存储分割后的字符串
char *tmp;
int count = 0;
tmp = strtok(str, delim); // 分割字符串
while (tmp != NULL) {
result[count++] = tmp;
tmp = strtok(NULL, delim);
}
*num = count; // 记录分割后的字符串数量
char *ret = (char*)malloc(sizeof(char) * MAX_LEN * count); // 申请内存空间存储结果
memset(ret, 0, MAX_LEN * count);
for (int i = 0; i < count; i++) {
strcat(ret, result[i]);
strcat(ret, " ");
}
return ret; // 返回分割后的字符串
}
int main() {
char str[MAX_LEN];
printf("Enter a string: ");
scanf("%[^\n]", str); // 读取一行字符串
int len = strlen(str);
int num = 0;
char *delim = " ,-*()/"; // 定义分割字符集
char *result = split(str, delim, &num);
printf("分割后的字符串为:\n%s\n", result);
printf("分割后的字符串数量为:%d\n", num);
return 0;
}
```
运行结果:
```
Enter a string: 1 + 2 * (3 - 4) / 5
分割后的字符串为:
1 + 2 * ( 3 - 4 ) / 5
分割后的字符串数量为:9
```
阅读全文