📄 12.3 c++对文件操作的支持.txt
字号:
12.3 C++对文件操作的支持
在 c++中,向文件中写入数据可以使用 ofstream类来实现,其构造函数为:
ofstream( const char* szName , int nMode = ios : :out , int nProt = filebuf:: openprot );
可见, ofs位eam类的构造函数有三个参数,其中后两个参数有默认值。这三个参数各
自的含义如下所述:
. szName
指定将要打开的文件名。
. nMode
指定文件打开的模式,其取值如表 12.4所示,可以利用位或操作将这些模式组合起来使用。
表 12 .4 nMode的取值
模式 说明
lOs::app 函数将执行一个定位操作,将文件指针移动到文件的结尾。当向文件写入新数据时,将
总是添 加到文件的末尾处,即使已经用 ostream: :s回kp函数移动了文件指针的位置
los::ate 函数将执行一个定位操作,将文件指针移动到文件的结尾。当向文件写入第一个新的字
节数据 时,将在文件的末尾处添加。但随后写入的其他字节的数据,将被写入到当前位置
IOs::m 如果指定了此模式,则原始文件(如果存在的话〉将不会被截断
lOS::Out 打开文件,用于输出(暗指用于所有的。fstream对象〉
lOs::trunc 如果文件己经存在,则它的内容将被清空.如果指定了 ios: : out模式,并且没有指
定lOs :: app. IOs::ate和 los in模式,则就隐含地指定了此模式
10S ::白 ocreate 如果文件不存在,则函数失败
ios::noreplace 如果文件已经存在,则函数失败
ios::binary 以二进制方式打开文件 (默认是文本方式〉
. nProt
指定文件保护规格说明。其取值如表 12.5所示。表 12.5 nProt参数取值
取值 说明
fùebuf: :sh_compat 兼容共享模式
fi!ebuf::sh none 排他独占模式,不共享
fi!ebuf: :sh_read 允许读共享
fi!ebuf::sh write 允许写共享
下面我们利用。fstream类实现文件写入操作,首先将 File程序的 OnFileWrite函数中
己有代码注释起来,然后添加下述例 12-14所示代码。 1~tl12-14
void CFileView : :OnFileWrite()
ofstream ofs("4.txt");
ofs . write ( " http://www . sunxin. org" , strlen ( " http: //www . sunxin. org" ) ) ;
ofs.close() ;
上述如例 12-14所示代码中,首先构造了一个 ofstream对象: ofs,然后利用该类的 write方法向
文件中写入数据,并在数据写完之后,利用这个类的close方法关闭文件。
同时,因为这里利用了 C++中的 ofstream类来完成文件的写入操作,所以还必须在 FileView.cpp
文件中包含头文件: fstream.h(代码如下所示),这是系统头文件,应该使用尖括号 C<>) :
#include <fstrearn.h>
运行 File程序,单击【文件操作\写入文件】菜单项,然后在 File程序所在目录下可以看到新生成
的4.txt文件,打开该文件可以看到程序中写入的内容:http://www.sunxin.org。
相应地,利用C++函数读取文件时,可以使用ifstream类,其构造方法与ofstream类的相同。我们首
先将File程序的OnFileRead函数中已有代码注释,然后添加如例 12-15所示代码。
例 12-15
void CFileView: :OnFileRead()
ifstream ifs (" 4 . txt") ;
char ch[100];
memset(ch, 0, 100) ;
ifs .read(ch,100) ;
ifs .close() ; MessageBox (ch) ;
在如例 12-15所示代码中,首先构造了一个 ifs位eam对象:出,接着定义一个字符数组ch,用来保
存读取到的数据,井通过调用 memset函数将该字符数组中的元素都设置为 0,然后调用 ifs位eam
类的 read函数读取文件中的内容。当对文件读取操作完成之后,调用 ifstream类的close方法关闭
文件。最后调用MessageBox函数显示读取到的数据。
运行File程序,单击【文件操作\读取文件】菜单项,从程序弹出的消息框中可以看到从文件中读取
到的数据。因为利用 C++函数对文件进行操作的应用场合比较少,因此这里只是简单地介绍了。
fstream和 ifstream这两个类的使用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -