⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12.3 c++对文件操作的支持.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 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 + -