如何解析字符串?

bullcat 2003-08-14 08:09:42
有一个字符串:“22*33*1*34334*222*11”,我想以“*”为参考解析出“22”、“33”、“1”、“34334”、“222”、“11”放到一个数组中去。
请问大虾如何做?
...全文
443 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ark13 2003-08-17
  • 打赏
  • 举报
回复
char *temp="22*33*1*34334*222*11";
char *p;
String number[10];

int i=0;
p=strtok(temp,"*\0");
while( p!= NULL)
{
number[i++]=p;
p=strtok(NULL,"*\0");
}
tzk 2003-08-17
  • 打赏
  • 举报
回复
strtok最方便
keiven 2003-08-17
  • 打赏
  • 举报
回复
chon81(当我遇上你…) 和 hawkxjy(基本不会) 他们俩说的对,当遇到一个‘*’就把数字字符放到数组中直到出现下一个‘*’。
梦回童年001 2003-08-17
  • 打赏
  • 举报
回复
用STL可能會更好。
yzb1000 2003-08-17
  • 打赏
  • 举报
回复
strtok
很好用的啊
aimheliopause 2003-08-14
  • 打赏
  • 举报
回复
iostream就可以做到,如果是字符串用string_stream
,设置*为间隔符使用〉〉就可以读入每个元素了。
设间隔符的函数名字我忘了,自己去查一下。
hawkxjy 2003-08-14
  • 打赏
  • 举报
回复
chon81(当我遇上你…) 的方法是正确的,如果可以使用动态数组的话会更实用一点。
char str[];
int row,col;
cout<<"input the char:";
cin>>str;
row=col=strlen(str);
char **p = new char* [row];
for(int i = 0; i < row; i++) //动态分配数组
p[i] = new char[col];
int i=0,j=0,n=0;
while(str[n])
{
if(str[n]=='*')
{
p[i][j]=NULL;
i++;
j=0;
}
else
{
p[i][j]=&str[n];
j++;
}
n++;
}
p[i][j]=NULL;
//下面是显示出来.
.........................

//将指针置空
for(int i = 0 i < row; i++)
delete[] p[i];
delete []p;
............................

大致是这个思路,这样可以按照输入的变化而使程序动态进行。

sharkhuang 2003-08-14
  • 打赏
  • 举报
回复
strtok
chon81 2003-08-14
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "conio.h"

main()
{
char str[]="22*33*1*34334*222*11";
char strArrary[6][10];
int i=0,j=0,n=0;
while(str[n])
{
if(str[n]=='*')
{
strArrary[i][j]=0;
i++;
j=0;
}
else
{
strArrary[i][j]=str[n];
j++;
}
n++;
}
strArrary[i][j]=0;
//下面是显示出来.
i++;
while(i--)
printf("%s\n",strArrary[i]);
getch();
}
jwwu 2003-08-14
  • 打赏
  • 举报
回复
io流里面好像有这样的函数
自己写一个也可以
很容易
cdocument 2003-08-14
  • 打赏
  • 举报
回复
碰到‘*’就截断字符串,然后再连接就行了

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧