2 djshichaoren djshichaoren 于 2016.03.31 09:36 提问

ifstream在子函数中无法重定向

图片说明
正如上图中显示的那样,如果我在main函数中直接cin>>n,可以读取到,但是如果在readNum()中用cin>>n则只能得到默认值,请问这是为什么?怎么解决?

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.31 10:19
已采纳

楼主应该要将while(readNum())改成while(n=readNum())
不然main函数里的n怎么能接收的到readNum函数里的值

qq423399099
qq423399099 回复djshichaoren: 哈哈哈
一年多之前 回复
djshichaoren
djshichaoren 确实是我错了,应该赋值的,光想着会不会死循环,忘了后面还有判断,谢谢了!
一年多之前 回复
djshichaoren
djshichaoren 不对啊,我那里没错,我readNum()返回的是int!!! 害得我自责半天
一年多之前 回复
djshichaoren
djshichaoren 谢谢,我在windows上写错了,但是即使是写了也不行。我调了好久终于发现,原来cin是一个局部变量,在子函数中的cin还是iostream包中的,还是从控制台传。解决方法有二,一是把cin写为全局变量,并且不能叫cin; 二是把cin当作参数传给子函数,int readNum(ifstream& cin)
一年多之前 回复
djshichaoren
djshichaoren   2016.03.31 11:23

1.把ifstream写为全局变量,得换个名字
2.把cin传给子函数,类型是ifstream&

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!