C++文件操作:打开文件和写入文件

如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍;而且,这个结果也不能被保留。
如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中。

文件分类

外部文件和内部文件

  1. 外部文件:指磁盘文件,也是通常所谓的文件。

  2. 内部文件:指在程序中运行的文件,更正式的称谓是“文件流对象”。

  3. 程序中操作的是内部文件,最后保存的是外部文件。

文本文件和二进制文件

  1. 文本文件:由字符序列组成,以字符(character) 为存取最小信息单位,也称“ASCII码文件”。

  2. 二进制文件:由二进制数组成。

使用过程

本节只讨论文本文件的使用方法和操作过程及其简单应用。
使用文本文件的过程是固定的,一般步骤如下:

(1) 打开一个文件,使磁盘文件和文件流对象建立联系;

(2) 将数据按文本方式写入一个文件,就如同cout用于向显示器送数据。以后可从这个文件读取数据,就如同cin用于键盘输入。

(3) 当不再使用文件时,要关闭文件,此时文件将从缓冲区中完全写回磁盘。这样,可以永久保存数据。

操作步骤

1.说明一个文件流对象(内部文件)。

例如:     ifstream ifile;     //说明输入文件流对象ifile

ofstream ofile;     //说明输出文件流对象ofile
说明:

  • 文件流类型ifstream支持从输入文件中提取数据的操作。

  • 文件流类型ofstream完成数据写入输出文件中的各种操作。

  • ifile是输入文件流对象,用于读;ofile是输出文件流对象,用于写。

2.打开文件,在文件流对象和磁盘文件之间建立联系。

例如:     ifile.open( "d:\\my_in_file.txt" );

ofile.open( "d:\\my_out_file.txt" );

说明:

  • 双引号中的字符串(如"d:\\my_in_file.txt" )为磁盘文件路径名。

  • 通过输入文件流对象(如ifile)或输出文件流对象(如ofile)打开指定磁盘文件,将在文件流对象和磁盘文件之间建立联系。

  • 输入/输出文件流对象都被称为“内部文件”,即和对应磁盘文件联系的“虚文件”。

3.对文件进行读写操作。

  • 文件读写在文件缓冲区中进行。

  • 最常见的文件读写是顺序的,即从文件头开始进行。

  • 顺序读写可用C++的提取运算符(>>)和插入运算符(<<)进行;也可以用读字符的get()和读字符串的getline()等函数进行。

4.关闭文件。
文件操作结束后,应该显式地关闭该文件,与打开文件相对应,例如:

ifile.close();

ofile.close();
关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件中,保证文件的完整;同时把磁盘文件名与文件流对象之间的关联断开,可防止误操作修改了磁盘文件。

应用举例

【例2.25】将百鸡问题计算结果存入文件。

1 #include<fstream> 2  #include<iomanip> 3  using namespace std; 4  int main(){ 5      int i,j,k; 6      ofstream ofile;               //定义输出文件 7     ofile.open("d:\\myfile.txt");     //作为输出文件打开 8     ofile<<"   公鸡      母鸡      小鸡"<<endl;   //标题写入文件 9     for(i=0;i<=20;i++)10          for(j=0;j<=33;j++){11              k=100-i-j;12              if((5*i+3*j+k/3==100)&&(k%3==0))            //注意(k%3==0)非常重要13             ofile<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl;   //数据写入文件14         }15      ofile.close();                //关闭文件16     return 0;17  }

【例2.26】读出存放百鸡问题计算结果的文件

1 #include<fstream> 2  #include<iostream> 3  #include<iomanip> 4  using namespace std; 5  int main(){ 6      char a[28]; 7      ifstream ifile;               //定义输入文件 8     ifile.open("d:\\myfile.txt");     //作为输入文件打开 9     int i=0,j,k;10      while(ifile.get(a[i])){      //读标题,请对比cin.get(),不可用>>,它不能读白字符11         if(a[i]=='\n') break;12          i++;13      }14      a[i]='\0';15      cout<<a<<endl;16      while(1){17          ifile>>i>>j>>k;                                 //由文件读入数据18         if(ifile.eof()!=0) break;            //当读到文件结束时,ifile.eof()为真19         cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl;     //屏幕显示       20      }21      ifile.close();                 //关闭文件22     return 0;23  }

重要提示

  • 操作步骤的第1、2步可以合并为1步,即说明文件流对象的同时打开对应的磁盘文件。例如:

ifstream ifile( "d:\\my_in_file.txt" );  //说明输入文件流对象ifile并打开文件

ofstream ofile( "d:\\my_out_file.txt" );//说明输出文件流对象ofile并打开文件

  • 打开文件时,如磁盘文件不存在,会自动建立文件,但指定目录必须存在,否则建立文件失败。

  • 计算机将外部设备也作为文件进行管理。例如:键盘和显示器是标准的输入输出文件,其文件名分别为cin和cout。

  • 磁盘文件操作与键盘、显示器操作非常相似。例题中用输出文件流对象(如ofile)代替cout,输入文件流对象(如ifile)代替cin,数据的去向和来源则由显示器和键盘变为磁盘文件。

  • 对文件进行操作,必须在程序前增加一句: #include<fstream>

(0)

相关推荐

  • C/C++编程笔记:C++中的标准输入流 & 标准输出流

    输入流:如果字节流的方向是从设备(例如,键盘)到主存储器,则此过程称为输入. 输出流:如果字节流的方向相反,即从主存储器到设备(显示屏幕),则此过程称为输出. C ++中可用于输入/输出操作的头文件是 ...

  • 遍历本地文件夹并建立超链接

    ​ Sub QQ1722187970() Dim i Dim sPath sPath = GetPath If Len(sPath) Then Dim oWK As Worksheet Set oWK ...

  • 操作无法完成,因为文件已在Windows资源管理器打开

    想删除一个文件夹的时候,不给删除.怎么能忍.根据提示显示,文件被资源管理器打开了.那我们找到它,关闭它就可以了. 打开资源管理器 Ctrl+Shift+Esc打开"任务管理器",如 ...

  • Delphi txt文件的操作(读取、写入)

    在进行win32开发中对文件的读写是最常用的操作之一 Delphi 支持三种文件类型:  文本文件.记录文件.无类型文件. 文本文件的读写: 文本文件 是以行为单位进行读.写的.由于每一行的长度不一定 ...

  • 未来15年赚钱之路已写入文件!详解“增加居民财产性收入”是何意

    未来15年赚钱之路已写入文件!详解“增加居民财产性收入”是何意

  • 教你如何在Mac上打开CAJ格式的文件

    今天有人问我「Mac 怎么打开 CAJ 格式文件啊?」 我的第一反应是: CAJ 是啥? 科普: CAJ是电子刊物的一种格式.可以使用CAJ全文浏览器来阅读. CAJ全文浏览器是中国期刊网的专用全文格 ...

  • 映像文件,教您ISO映像文件怎么打开

    其实之前小编也是不知道ISO映像文件怎么打开的,对亏小编的朋友告诉我,我才知道了打开的方法.那么接下来我就来和你们分享ISO映像文件的打开方法,让你们也可以知道怎么打开ISO映像文件. 小编最近发现小 ...

  • Linux(C/C++)下的文件操作open、fopen与freopen

    open是linux下的底层系统调用函数,fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的系 ...

  • SPSS如何打开sav.的格式文件?

    SPSS是一个比较好用的数据处理软件,sav.的格式文件是SPSS的默认文件格式,下面小编就来 教大家如何来打开吧! 1.在开始界面中点击SPSS的图标打开. 2.打开SPSS之后会弹出一个对话框,这 ...

  • win10电脑怎么操作,移动个人资料文件夹

    首先在桌面上找到这台电脑图标,使用鼠标双击图标,用户可以进入到这台电脑窗口,用户在窗口中可以看到我的文档,我的视频等个人文件夹,使用鼠标右键右击想要移动的文件夹,在右边出现的选项最下面找到并点击属性w ...

  • C#中实现文件拖放打开的方法

    C#中实现文件拖放打开的方法 设置Form属性 AllowDrop = True; 在Form事件中 private void Form1_DragDrop(object sender, DragEv ...