c++-ifstream在子函数中无法重定向

问题描述

ifstream在子函数中无法重定向


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

解决方案

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

解决方案二:

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

时间: 2024-07-30 21:25:56

c++-ifstream在子函数中无法重定向的相关文章

c-将主函数分到子函数中

问题描述 将主函数分到子函数中 #include typedef struct student { char name[10]; char id[10]; int scord1; int scord2; double scord3; }student; int main() { FILE *fp=NULL, *ftp=NULL; int i = 0, a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; double average = 0; stud

c语言-C语言:在子函数中修改结构变量中元素的值

问题描述 C语言:在子函数中修改结构变量中元素的值 要写一个处理学生成绩信息的程序,使用单向链表,创建,遍历已经没有问题,但在修改结点的数据时出现问题,输入数据后程序就停止运行. 修改的思路是先根据学号定位到指定结点,然后修改数据,修改函数如下 void Correct(float *a,float *b,float *c,float *d,float *e,float *f) { printf("请依次输入学生正确的的英语 数学 物理 C语言成绩n"); scanf("%f

c语言中如何把在子函数中用malloc开辟的空间传回主函数?

问题描述 c语言中如何把在子函数中用malloc开辟的空间传回主函数? 如何把在子函数中用malloc开辟的空间传回主函数? 我将指针传给子函数,但却没有将开辟的空间地址带回到主函数 解决方案 malloc返回的是函数指针.你直接返回这个指针就可以了. 如果是在参数中,那么看你的参数有没有加上引用符号.& 解决方案二: 可以通过返回值啊... "如何把在子函数中用malloc开辟的空间传回主函数? 我将指针传给子函数,但却没有将开辟的空间地址带回到主函数" 第一句我看懂了,第二

变元-c语言如何在子函数读取主函数中的数组

问题描述 c语言如何在子函数读取主函数中的数组 要一次性全部读取这个数组,不需要改变数组. 比如我有个数组a[10].我想一次性在子函数中读取a从1到10的所有字符.如果不通过指针,可以用变元传递嘛 解决方案 你用数组做形参,传过去的实参相当于传指向数组的指针. 解决方案二: 标准C语言,没有你所说的变元的东东.变元,都是后来 C++/C# 才有的. 指针是最方便的,其它不想说了. 解决方案三: c语言就指针了吧!其他的没有指针直接了! 引用,变元都不是c的东西了! 说具体需求吧 解决方案四:

管理-子函数结束后没有返回主函数就崩溃了怎么回事

问题描述 子函数结束后没有返回主函数就崩溃了怎么回事 #include #include #include typedef struct reader{ char name[10]; char key[6]; int kind;//普通读者 struct reader *next; }reader; typedef struct bookers{ char name[10]; char key; int kind;//图书管理员 struct bookers *next; }bookers; t

javascript在子页面中函数无法调试问题解决方法

 遇到在子页面中提交的时候会无法能够调试javascript代码的情况出现,下面有个不错的解决方法,希望对大家有所帮助 近期在做一个项目,会遇到在子页面中提交的时候会无法能够调试javascript代码的情况出现,有时候这种问题,我们无法正常在浏览器,看到我们子页面的javascript代码,所以只能够用原始的alert 或者 console.log(),当然,这也是一种解决方法,但是有时候,我们就想看一下程序到底是如何运行的,同时也可以看每个参数到底是什么值,所以意义还是比较大的.    我贴

指针-C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可?

问题描述 C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可? 某书思考题 只改动子函数 实现主函数中数组排序我写了3种子函数 注释的都是可以正常用的 最上面的不可以(排序没变)不知道是为啥(指针不是代表地址吗 既然形参无法传回那我改变地址应该也可以啊) #include<iostream>#include<iomanip>#include<cstdlib> //pauseusing namespace std;//排序不变void swap(

C++中rdbuf重定向流的例子

今天学习了一点东西,其实是复习了.关于rdbuf的使用. C++中rdbuf重定向流的经典例子: #include <iostream> #include <fstream> int main(void) { std::ifstream log("out.log"); std::streambuf* x = cout.rdbuf(log.rdbuf()); // 返回cout的流对象指针,使cout重定向到log文件中 std::cout << &q

深入理解函数中分配内存的问题

先看这样的代码  1void MyNew(int *p) 2{ 3    p = new int; 4} 5 6int main() 7{ 8    int *p = NULL; 9    MyNew(p);10} 开始写了一篇函数中分配内存的问题,通过说明他们产生了拷贝,而导致p不能成功分配.但并未提出事实根据,下面我们来仔细看看具体原因. 我们需要弄清两点:1.main函数中的p与MyNew函数中的p是不是一样:2.如果不一样,是怎么导致了不一样的. 第一点很好看,我们可以在编译器(VC环境