c++怎么清楚一个变量中已储存的数据?从而再次输入?

这是一部分代码,当输入d不为=号时陷入死循环istream&operator>>(istream&in,CEquation&e){chard;//=intf;//0whi... 这是一部分代码,当输入d 不为=号时陷入死循环
istream &operator >>(istream &in,CEquation &e)
{

char d;//=
int f;//0
while(1)
{
cin>>e.a>>e.unknow>>e.b>>d>>f;
if(d=='='&&f==0)
{break;}
else
{cout<<"输入格式错误,请重新输入:"<<endl;}}
return cin;

}
展开
 我来答
百度网友5722492f7
2013-05-03 · TA获得超过725个赞
知道小有建树答主
回答量:594
采纳率:0%
帮助的人:472万
展开全部

void main()
{
    char d;//= 
 int f;//0  
 while(1) 
 {     
  cout<<"请输入=号和0"<<endl;
  cin>>d>>f;       
  if(d=='='&&f==0)   
  {break;}    
  else    
  {
   cout<<"输入格式错误,请重新输入:"<<endl;
  }
 } 
}

测试代码如上,你的问题是对while的不理解

while(1)这个如果没有break的话,那么就是一个死循环

也就是说当d不等于等号或者f不等于0时,就继续下一次循环

所以不用添加你所谓的return cin。

第一次输入3和0,显然不满足=0的条件,那么提示错误,进入下一次循环,再次要求输入。

直到输入=和0.

你所谓的清楚是没有必要的,因为cin获取到的值会自动覆盖之前的赋值。

希望能帮助您,望采纳。

追问
呵呵,已经改正了,嘻嘻,不过这个是重载输入流&……
sky28_sky28
2013-05-03 · TA获得超过404个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:239万
展开全部

楼主这写的运算符重载有问题。重载这东西要理解为什么这么写,每一个符号的重载基本上都有相对固定的模式,理解才是最重要的。像<<和>>这两个符号的重载最好是声明为友元函数。下面是修改后的代码:

class CEquation
{
......//你自己写的部分
public:
friend stream &operator >>(istream &in,CEquation &e);
}
istream &operator >>(istream &in,CEquation &e)
{
char d;//=
int f;//0
while(1)
{
in>>e.a>>e.unknow>>e.b>>d>>f;//这里能不能直接访问e的成员呢?
if(d=='='&&f==0)
{break;}
else
{cout<<"格式错误,请重新输入:"<<endl;}
}
return in;
}
追问
谢谢,很有帮助,哈哈,受益良多
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Pluto_Hards
2013-05-03 · TA获得超过301个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:137万
展开全部
直接给他赋个值就行了,比如在想跳出循环的时候给个d = x;什么的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
低调明哥24
2013-05-03 · TA获得超过183个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:141万
展开全部
return cin;这句话可以删掉的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式