首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

从连续的字符串中抽取不同类型的数据单独存储解决方法

2012-09-11 
从连续的字符串中抽取不同类型的数据单独存储我现在输入一个表达式的时候例如:123+456[enter]时把123,+

从连续的字符串中抽取不同类型的数据单独存储
我现在输入一个表达式的时候例如:
123+456=[enter]
时把123,'+',456分别抽取出来,分别存储为int类型和char类型

我的想法是
1)将“123+456=”保存在一个string A里面
2)再char c;c = getchar();
3)如果c为符号则入栈
4)如果c为数字则存到符号数组 char a[20];继续c = getchar();直到c为符号
5)当c再次为符号的时候,将符号数组a[20]里的数转为int然后也入栈......

结果是惨淡的,我的算法貌似很烂而且我实现不了。请问大家有正确的算法或者代码吗?


[解决办法]
借助于scanf 呢

#include <stdio.h>
main()
{
char s[64] = "123+456=";
char a[16], b[16];
int i, j;

sscanf(s, "%d%[^0-9]%d%[^0-9]", &i, a, &j, b);
printf("i=%d\n", i);
printf("j=%d\n", j);
printf("a=%s\n", a);
printf("b=%s\n", b);
}
[解决办法]
你想做什么呢?表达式求值,还是parse字符串?
表达式求值有相关的书籍介绍算法,如果是parse字符串,可以使用std::string::iterator去遍历这个字符串。也可以使用索引去扫描字符串
[解决办法]
表达式求值算法? 利用栈。

热点排行