学了这么久的C++,今天才发现有一个问题我一直理解错了。
问题:输入一串数字表达式,如1+23*3+2
输出:求表达式的值
原来的做法:直接读入这一行,然后一个一个字符扫描,如果是数字,就放入一个整数变量a中,后面还是数字b,则a=a*10+b(这肯定要先转成数值,如字符读入到变量ch中,那b=ch-'0'),如果后面还是数字c,则继续算a=a*10+c,如果不是则a数值保存。
我错了吗?错了!因为我的理解这种数字的输入没法直接读入整数,以为两个数据中间必须以空格、TAB、回车等分隔(cin默认的分隔符),实际上当类型改变了也可以直接结束当前变量的读入,是可以直接连续读入的。比如定义int a,b,c,d; char ch1,ch2,ch3;在读数据时可直接cin>>a>>ch1>>b>>ch2>>c>>ch3>>d;结果a=1,b=23,c=3,c=2,ch1='+',ch2='*',ch3='+';。
其实,我虽然测试了这个例子是这样,但现在理解是否全对,还望各位大咖指教!