c++ - 为什么我不能从函数返回的流的引用中读取?
问题描述
我想从我的函数返回的流中获取数据,但是当我尝试时它会引发异常。这是我的简短代码:
#include <iostream>
#include <fstream>
using namespace std;
ifstream& detect() {
ifstream stream;
stream.open("in.txt");
return stream;
}
int main() {
int s;
ifstream& fin = detect();
fin >> s; //exception thrown: Access violation reading
cout << s;
}
我怎么解决这个问题?是因为“fin”的引用类型引起的吗?
解决方案
stream
in detect()
function 是一个局部变量,在函数调用后将被释放。您不能传递stream
. 而是将代码更改为:
ifstream detect() {
ifstream stream;
stream.open("in.txt");
return stream;
}
推荐阅读
- laravel - VueJS 和 Laravel 多页面
- spring - Redisson 是否支持 spring-data-mongodb
- python - 无法以自定义方式对输出进行分层
- r - 计算超过 18 小时臭氧值的最大移动平均值
- java - 设置枚举的默认值(Java)
- python - 如何组织 Poly 并创建 Node
- google-cloud-platform - Odoo 13 配置workers和limit_memory_hard、limit_memory_soft、max_cron_threads
- flutter - 管理页面的最佳位置在哪里?
- flutter - 如果我只使用提供 100 个功能的插件中的 1 个功能,它会影响颤振应用程序的大小吗?
- c# - 除非我注销用户,否则 CollectionView 不会更新