C++有没有办法把字符串里面的东西分开来? 就是"1+2.4*5.4/5"把数字和运算符号分开?
答案:3 悬赏:10 手机版
解决时间 2021-01-22 18:09
- 提问者网友:椧運幽默
- 2021-01-22 04:17
C++有没有办法把字符串里面的东西分开来? 就是"1+2.4*5.4/5"把数字和运算符号分开?
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-01-22 05:53
可以。
程序处理例子如下
#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;i printf("\nvalues: ");
for (i=0;i
return 0;
}
--
例子输出:
op: + * / -
values: -1 2.4 5.4 5 6
程序处理例子如下
#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
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;i
for (i=0;i
return 0;
}
--
例子输出:
op: + * / -
values: -1 2.4 5.4 5 6
全部回答
- 1楼网友:傲气稳了全场
- 2021-01-22 07:07
当然可以。。操作字符指针就行了撒。但是肯定不是你想要的结果因为这时候运算符也成一个字符了。你是想输入一个字符串,然后得出结果来。这样的话涉及比较复杂的字符转换,这也是刚学习学习编程的一个异想天开的想法。不过既然你提出来了,给你一个解决办法:
每读取一个字符都用一个switch-case来判断是否是某一个运算符:
swich(ch)
{
case '+':
break;
case '-':
break;
case '*':
break;
case '/':
break;
default: //为数字
break;
}
这只是其中分割运算符的部分,还要在外面嵌套数值累加计算部分。。。代码太多了。别考虑这样较劲的问题了。简单问题简单考虑。就连windows的计算器也没有实现那样的功能。追问不用这么复杂我只是想要把这个string中的+-*/分开来然后存在vector把其他的存在另一个vector里面。我会存在一个string里面。不知道substr和vector 要怎么用所以就有些困惑追答那就简单了,随便调用strchr函数去找这几个运算符字符,每找到一个就复制一个,然后原字符串向前移动一个字符就成;
每读取一个字符都用一个switch-case来判断是否是某一个运算符:
swich(ch)
{
case '+':
break;
case '-':
break;
case '*':
break;
case '/':
break;
default: //为数字
break;
}
这只是其中分割运算符的部分,还要在外面嵌套数值累加计算部分。。。代码太多了。别考虑这样较劲的问题了。简单问题简单考虑。就连windows的计算器也没有实现那样的功能。追问不用这么复杂我只是想要把这个string中的+-*/分开来然后存在vector
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯