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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用ifstream ofstream重定向输入输出 c++
//使用ifstream和ofstream及cin和cout的rdbuf() #include #include using namespace std; int main() { printf(" 使用ifstream和ofstream及cin和cout的rdbuf()来改变控制台的标准输入输出\n"); //将控制台的标准输入输出改成从文件中读取写入 ifstream i
关于ifstream打开windows文件失败的问题
今天测试ifstream,老是打不开windows下的文件。 代码如下: #include #include #include #include using namespace std; int main(){ ifstream file("E:\\work\1234.txt",ios::in); if(file) c
ifstream文件无法读取
从其他文件夹拷过来的txt文件无法读取,open总是失败,只好拷贝了txt文件里的内容,新建了一个txt文件,粘贴,可以读取了。。。。。
C++中rdbuf重定向流的经典例子
: #include #include int main(void) {  std::ifstream log("out.log");  std::streambuf* x = cout.rdbuf(log.rdbuf()); // 返回cout的流对象指针,使cout重定向到log文件中  std::cout  std::cout.rdbuf(x);      // 恢复c
C/C++,Java 重定向输入输出流至文件
在我们做Online Judge的时候,OJ基本上都是用标准输入输出。但如果每次调试的时候也都是从控制台输入数据,那就太浪费时间了。 我们可以重定向标准输入,调试的时候从文件读数据,提交的时候从标准读。 在C语言中, 方法比较简单。使用函数freopen(), freopen是被包含与stdio.h头文件中,用于重定向输入输出流的函数。该函数可以在不改变代码原貌的情况下改变输入输出环
c++ 解决ifstream在断点debug下无法读取文件问题
std::ifstream input("data/output.off"); 在运行debug或release模式下编译生成的exe都能正常读取文件,但是设置断点点击调试的debug下就不能读取文件了。 原因是exe模式下,相对路径是在exe所在的文件夹为基准。 比如,文件的物理地址为E:\vs2010-projects\ModelDecompoent\Release\data\o
cin/printf 重定向
本地调试 C++ cin重定向
C++ ACM 基础 cin重定向 cout 格式化输出
#include #include #include #include using namespace std; int n; int main() { //用 stdin 可以写相对路径 //freopen("in.txt","r",stdin); //cin 重定向一定要写绝对地址 ifstream cin("D:\\C++\\work_algo\\进制转换C++\\in.
Qt入门可能会遇到的一些问题
1.Qt安装正常,但是每次打开时cpu占用率显示为99%,导致电脑直接卡死,连电源键都无法使用。 解决方法:这个问题困扰了我好久,而且为此还重装了两次系统,而且网上也没有搜到相关的解决办法,重装了系统,第一次是学长给装的,感觉装得有点问题,装好之后安装Qt还是出现上述问题。后来怀疑是VS2010的版本有问题,于是又重新到正规的地方重装了系统,并且更换了之前的VS版本,在安装Qt之后这个问题就解决
使用ifstream和getline读取文件内容
以下函数实现的功能是从指定路径中读取double类型的数据: int ReadDataFromFiles( string strPath, vector &vData ) {      ifstream sourceFiles( strPath );      if ( !sourceFiles.is_open() )      {           cout