文件部分-----(2)ASCII码文件读操作------------利用函数实现

来源:互联网 发布:网络歌手阿刚 编辑:程序博客网 时间:2024/05/21 08:43
/*当你要两次用一个输入流的时候用fin打开第一个文件,然后对文件内容处理,当你结束使用该输入流时,流被设置了eof或者fail,eof为end of file(文件结束符),fail为可恢复错误状态。fin.open(file1);while(fin >> temp){//do some thing}跳出循环,即是遇到输入错误或者文件结束符。此时流状态被设置为eofbit或者failbitfin.close()只关闭该流对文件的关联,并不清除错误状态。fin.clear()就做这个工作! */#include <iostream>#include <fstream>using namespace std;//将文件流关联的文件内容输出到屏幕上void read(ifstream & T) //输入文件流以引用作为参数 ,因为流对象不能拷贝{  char ch;      if(!T)  {   cout<<"文件打开有误"<<endl;   return ;  }   while(!T.eof())  {    T.get(ch);cout<<ch;  }    cout<<"文件读取结束"<<endl;  cout<<"--------------"<<endl;}int main(){  ifstream inFile("file1.txt");  read(inFile);  inFile.close();   inFile.clear();//清除错误状态,此非常重要,如无此句,第二次打开文件时,会出错   inFile.open("file2.txt"); //注意,不用创建流对象,只需更改该文件流对应的文件  read(inFile);  inFile.close();  return 0;}


程序运行前,file1.txt 和file2.txt已存在,并且有内容

 

 

 

 

程序运行结果

 

要注意的问题

(1) 流对象不能拷贝,依次流对象作为参数时,要用引用,否则运行时会报错

(2)

当你要两次用一个输入流的时候
用fin打开第一个文件,然后对文件内容处理,当你结束使用该输入流时,流被设置了eof或者fail,
eof为end of file(文件结束符),fail为可恢复错误状态。

fin.open(file1);
while(fin >> temp){
//do some thing
}
跳出循环,即是遇到输入错误或者文件结束符。
此时流状态被设置为eofbit或者failbit

fin.close()只关闭该流对文件的关联,并不清除错误状态。
fin.clear()就做这个工作!

 

 如果上例中我们将

inFile.clear(); 注释掉

/*当你要两次用一个输入流的时候用fin打开第一个文件,然后对文件内容处理,当你结束使用该输入流时,流被设置了eof或者fail,eof为end of file(文件结束符),fail为可恢复错误状态。fin.open(file1);while(fin >> temp){//do some thing}跳出循环,即是遇到输入错误或者文件结束符。此时流状态被设置为eofbit或者failbitfin.close()只关闭该流对文件的关联,并不清除错误状态。fin.clear()就做这个工作! */#include <iostream>#include <fstream>using namespace std;//将文件流关联的文件内容输出到屏幕上void read(ifstream & T) //输入文件流以引用作为参数 ,因为流对象不能拷贝{  char ch;      if(!T)  {   cout<<"文件打开有误"<<endl;   return ;  }   while(!T.eof())  {    T.get(ch);cout<<ch;  }    cout<<"文件读取结束"<<endl;  cout<<"--------------"<<endl;}int main(){  ifstream inFile("file1.txt");  read(inFile);  inFile.close();   //inFile.clear();//清除错误状态,此非常重要,如无此句,第二次打开文件时,会出错   inFile.open("file2.txt"); //注意,不用创建流对象,只需更改该文件流对应的文件  read(inFile);  inFile.close();  return 0;}

 

会出现以下运行结果,读取第二个文件时,会出现错误


原创粉丝点击