永发信息网

C++有没有办法把字符串里面的东西分开来? 就是"1+2.4*5.4/5"把数字和运算符号分开?

答案:3  悬赏:10  手机版
解决时间 2021-01-22 18:09
C++有没有办法把字符串里面的东西分开来? 就是"1+2.4*5.4/5"把数字和运算符号分开?
最佳答案
可以。
程序处理例子如下

#include
int main(){
char str[80]="-1+2.4*5.4/5-6";
char op[20];
float v[20];
int n_op=0;
int n_v=0;
int i;
sscanf(str,"%f",&v[0]); n_v++;
for (i=1;i if ( str[i]=='+' || str[i]=='-' || str[i]=='*' ||str[i]=='/'){
op[n_op]=str[i]; n_op++;
str[i]=' '; sscanf(&str[i],"%f",&v[n_v]); n_v++;
}
}; // end for
printf("op: ");
for (i=0;iprintf("\nvalues: ");
for (i=0;i
return 0;
}
--
例子输出:
op: + * / -
values: -1 2.4 5.4 5 6
全部回答
当然可以。。操作字符指针就行了撒。但是肯定不是你想要的结果因为这时候运算符也成一个字符了。你是想输入一个字符串,然后得出结果来。这样的话涉及比较复杂的字符转换,这也是刚学习学习编程的一个异想天开的想法。不过既然你提出来了,给你一个解决办法:
每读取一个字符都用一个switch-case来判断是否是某一个运算符:
swich(ch)
{
case '+':
break;
case '-':
break;
case '*':
break;
case '/':
break;
default: //为数字
break;
}

这只是其中分割运算符的部分,还要在外面嵌套数值累加计算部分。。。代码太多了。别考虑这样较劲的问题了。简单问题简单考虑。就连windows的计算器也没有实现那样的功能。追问不用这么复杂我只是想要把这个string中的+-*/分开来然后存在vector把其他的存在另一个vector里面。我会存在一个string里面。不知道substr和vector 要怎么用所以就有些困惑追答那就简单了,随便调用strchr函数去找这几个运算符字符,每找到一个就复制一个,然后原字符串向前移动一个字符就成;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请帮忙列举形容粉丝的名称如死忠饭,亲妈饭等
一个让你哭的男人和一个让你笑的男人,你会选
牛野的宠物项圈好不好呢?
名侦探柯南有新一出现的是哪一集
武汉大学占全国多少排名?
想请泰国佛牌四面佛有用吗?
网上有电工帮忙接地线的吗
黄冈卫生学校
求助 求助 东西放在冰箱里 再 拿出来 之后吃
如何根据wing结构确定配位聚合物的分子式
用继保在流互端二次回路加流做试验,定值是22
总公司和分公司怎么做账和报税?核算怎么做?
成都跳登河到大邑县有多远
徐州的最新火车时刻表
中国工商银行附行式自助银行(许昌分行襄县支
推荐资讯
如何理解物质第一性,意识第二性
DH视频组倾情奉送 开心大拼盘第四期 TOP5到TO
有一种快乐 在空中听见, 这首歌叫什么名字
蛇果怎样分别脆的还是沙的
为纪念已故戴安娜王妃的一首歌
工单管理哪个CRM比较好?
有一首外语歌,高潮部分就是哦,哦~哦哦哦,
公司做无盘启动 主板是昂达H61 网卡是蝶舞88e
金汇鑫动漫娱乐城地址在什么地方,我要处理点
修改病句春天是一个到处充满生机的地方。
求知古代早挂的才子,例如郭嘉,纳兰容若之类
茗轩茶楼地址好找么,我有些事要过去,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?