vc如何实现选择性读取

来源:百度知道 编辑:UC知道 时间:2024/06/14 08:33:49
建立一个结构体
struct input
{
float num1;
char fuhao1;
float num2;
char fuhao2;
float num3;
char fuhao3;
float num4;
}inp;

现在输入一个计算方法 包括4个数字 3个运算符号 不定数目的括号
比如(12+7)*(7-8)
如今要选择性读入 不读如括号 存进结构体中
即输入(12+7)*(7-8)与 输入12+7*7-8,得到的结果都是
float num1=12;
char fuhao1=“+”;
float num2=7;
char fuhao2=“*”;
float num3=7;
char fuhao3=“-”;
float num4=8;
换句话说 就是不论有多少括号 括号在哪 都不管 只把数字和+ - * / 赋值到结构体中
我是个新手 请各位多多帮忙啊
主要就是要对这个赋值过后的结构体进行处理
还有就是有有float又有char 2种类型该用什么方法读入?
我是新手。。。。。所以麻烦把代码打出来分析下 十分感谢

/*
你说VC,那就是C++的吧
你网页里写的括号是全角的,下面的代码没去处理全角的情况
*/

#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
using namespace std;

int main(int argc, char* argv[]){
struct input
{
float num1;
char fuhao1;
float num2;
char fuhao2;
float num3;
char fuhao3;
float num4;
}inp; //这是你的结果
string s; //一个临时字符串
getline(cin,s); //读一行输入,你的一次完整输入应该在一行上,
s.resize(remove(s.begin(),s.end(),'(')-s.begin()); //去掉左括号
s.resize(remove(s.begin(),s.end(),')')-s.begin()); //去掉右括号
s.resize(remove(s.begin(),s.end(),' ')-s.begin()); //去掉空格

//把数字什么的读出来istringstream(s)>>inp.num1>>inp.fuhao1>>inp.num2>>inp.fuhao2>>inp.num3>>inp.fuhao3>>inp.num4;
//输(12+7)*(7-8) 不要输中文(全角)括号
//下面的句子用来看看结果对不对
cout<<inp.num1<<in