#include <fstream>
#include <iostream>
using namespace std;
int main()
{int i;
//ifstream infile1;
ifstream infile("c:\\dev-cpp\\20\\in_order.dat",ios::in);
if(!infile) cout<<"open error 1"<<endl;
else {char data;
while(!infile.eof())
infile>>data;
infile.close();
}
infile.open("c:\\dev-cpp\\20\\in_order.dat",ios::in);
if(!infile) cout<<"open error 2";
else
cout<<infile.eof();
cin>>i;
}
程序运行后输出open error 2,为什么我第二次打开就失败呢(同一个文件流对象不能再次打开另一个文件吗)
6 个解决方案
#1
在第二次打开之前调infile.clear()
#2
谢谢,修改后可以了。能解释一下这个函数的作用吗,还有我用close函数取消了关联,这样不行吗
#3
不太清楚,呵呵!关注!
#4
clear()函数的作用是清除文件流的标志(错误,到达末尾等),close()函数是关闭文件流,不影响流的标志。
第一次读文件时已经到达末尾,所以即使调了close()流标志仍在。
其实不用显示的调close()也可以,程序会自己调。但不建议这种写法。
#5
读写文件之后文件内部指针移到了最后
而且是一个无效区域
而且是一个无效区域
#6
讲的很好 很清楚 没有什么要说的了 顶一下
#1
在第二次打开之前调infile.clear()
#2
谢谢,修改后可以了。能解释一下这个函数的作用吗,还有我用close函数取消了关联,这样不行吗
#3
不太清楚,呵呵!关注!
#4
clear()函数的作用是清除文件流的标志(错误,到达末尾等),close()函数是关闭文件流,不影响流的标志。
第一次读文件时已经到达末尾,所以即使调了close()流标志仍在。
其实不用显示的调close()也可以,程序会自己调。但不建议这种写法。
#5
读写文件之后文件内部指针移到了最后
而且是一个无效区域
而且是一个无效区域
#6
讲的很好 很清楚 没有什么要说的了 顶一下