- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(C课件)第9章文件
第九章 流类库和输入/输出;9.1 C++的基本流类体系;9.2 文件的输入与输出;9.2 文件的输入与输出;9.2.1 文件的打开与关闭;2.使用文件流对象的成员函数打开一个磁盘文件。这样在文件流对象和磁盘文件名之间建立联系。文件流中说明了三个打开文件的成员函数。
void ifstream::open(const char*,int =ios::in,
int=filebuf::openprot);
void ofstream::open(const char *,int=ios::out,
int=filebuf::opernprot);
void fstream::open(const char*,int,
int=filebuf::openprot);
第一个参数为要打开的磁盘文件名。第二个参数为打开方式,有输入(in),输出(out)等,打开方式在ios基类中定义为枚举类型。第三个参数为指定打开文件的保护方式,一般取默认。所以第二步可如下进行:
iofile.open(“myfile.txt”,ios::in|ios::out);;文件打开方式:
是由在ios类中定义的公有枚举成员决定:
enum open_mode{
in=0x01,
out=0x02,
ate=0x04,
app=0x08,
trunc=0x10,
binary=0x80
};; ios::in 打开文件进行读操作
ios::out 打开文件进行写操作
ios::ate 打开时文件指针定位到文件尾
ios::app 添加模式,所有增加都在文件尾部进行
ios::trunc 如果文件已经存在则清空源文件
ios::nocreate 如果文件不存在则打开失败
ios::noreplace 如果文件存在则打开失败
ios::binary 二进制文件(非文本文件)
Mode的符号常量可以用位或运算|组合在一起,如:ios::in|ios::binary 只读方式打开二进制文件
对于ifstream流,mode默认方式是ios;;in;对于ofstream流,mode默认方式是ios;;out;; 三个文件流类都重载了一个带默认参数的构造函数,功能与open函数一样:
ifstream::ifstream(const char*, int=ios::in,
int=filebuf::openprot);
ofstream::ofstream(const char*,int=ios::out,
int=filebuf::openprot);
fstream::fstream(const char*,int,
int=filebuf::operprot);
所以1,2两步可合成:
fstream iofile(”myfile.txt”,ios::in|ios::out);; 打开文件也应该判断是否成功,若成功,文件流对象值为非零值,不成功为0(NULL),文件流对象值物理上就是指它的地址。
因此打开一个文件完整的程序为:
fstream iofile(”myfile.txt”,ios::in|ios::out);
if(!iofile){
cout”不能打开文件:””myfile.txt”endl;
return -1;
} //失败退回 ;3.使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写。
输出流函数: put write
输入流函数: get read;4.关闭文件。三个文件流类各有一个关闭文件的成员函数 :
void ifstream::close();
void ofstream::close();
void fstream::close();
使用很方便,如:
iofile.close();
; 关闭文件时,系统把该文件相关联的文件缓冲区中的数据写到文件中,保证文件的完整,收回与该文件相关的内存空间,可供再分配,把磁盘文件名与文件流对象之间的关联断开,可防止误操作修改了磁盘文件。如又要对文件操作必须重新打开。
关闭文件并没有取消文件流对象,该文件流对象又可与其他磁盘文件建立联系。文件流对象在程序结束时,或它的生命期结束时,由析构函数撤消。它同时释放内部分配的预留缓冲区。 ;例1 分析以下程序的运行结果,对文本文件的读写直接使用插入运算符《 和提取运算符》; int main()
{
文档评论(0)