14 chapter 文件处理(cpp大学教程)学习笔记

14 chapter 文件处理(cpp大学教程)学习笔记,第1张

14.1 文件和流 文件

1、内存中数据的存储是临时的,而用文件存储的数据是永久的——文件被储存在辅助存储设备中,如硬盘、CD、DVD、闪存驱动器和磁带

特点

每个文件都以一个文件结束符或者以存储在 *** 作系统维护、管理的数据结构中的一个特定字节数

文件处理模板

typedef ifstream是一个对basic_ifstream的特化,允许文件输入字符

typedef ofstream是一个对basic_ofstream的特化,允许文件输出字符

typedef fstream是一个对basic_fstream的特化,允许文件输入、输出字符

注意:该模板都是从basic_iostream\basic_istream\basic_ostream中“继承”而来,包含其所有的成员函数

14.2 创建顺序文件 打开一个文件
 ofstream outputFile("credit.dat", ios::out);
 if(!outputFile){cerr<<"File could not be opened";exit(EXIT_FAILURE);}

打开文件有两个参数:文件名和文件打开模式

文件名:若文件不存在,则自动创建该文件名的文件

文件打开模式ios::out——向一个文件输出数据:默认截顶,会自动清空文件里的数据重新输出

ofstream对象默认为ios::out文件打开模式

模式描述
ios::app将输出文件添加到文件尾,不截顶
ios::ate可以再文件任何位置输出数据,默认为文件尾
ios::in打开文件输入
ios::out打开文件输出,截顶
ios::trunc丢弃文件的内容
ios::binary打开一个文件进行二进制输入/输出

使用open打开一个文件

 ofstream outputFile;
 outputFile.open("credit.dat", ios::out);
14.3 从顺序文件中读取数据
 ifstream inFile("credit.dat", ios::in);
 if(!inFile){cerr<<"File coule not be opened";exit(EXIT_FAILURE);};

默认为输入打开模式,也可以使用open成员函数打开文件

文件定位指针

seekg()成员函数重定位下一个文件读入的字节号

seekp()成员函数重定位下一个文件输出的字节号

传递给重定位成员函数的第一个参数通常是一个long类型的整数

参数2作用
ios::beg从流的开始位置定位
ios::cur从流的当前位置进行定位
ios::end相对于流的结尾进行定位

tellg();tellp();用于高速下一个文件输入/输出的字节号

14.4 随机存取文件 输出和读取

成员函数write()从文件中“put”文件定位指针的位置开始输出固定数目的字节到指定的流

成员函数read()从文件“get”文件定位指针的位置开始读入固定数目的字节数据

成员函数write()输出字节数据

outputFile.write(reinterpret_class="superseo">cast(&client), sizeof(ClientData));

write()函数将第一个参数作为一组字节数据,将内存中的对象看做const char*类型,表示指向一个字节的指针;第二个参数为输出的字节数

reinterpret_cast<>()运算符转换指针类型

作用:把某种类型强制转换为其他无关类型

注意:该转换是在编译阶段完成,不会改变指针所指对象的类型

string类成员函数copy()

 string string1 = "stringCopy";
 char string2[10];
 string1.copy(string2, 10);

成员函数copy()的两个参数:

第一个参数:将要复制赋值的string数组

第二个参数:要复制的字符个数

用二进制模式打开一个输出文件

 ofstream outputFile("credit.dat", ios::out|ios::binary);

通过运算符"|"可以组合多种打开模式

成员函数read()读取文件数据

inFile.read(reinterpret_cast(&client), sizeof(ClientData));

第一个参数:要求的参数类型为char *,需用强制类型转换

第二个参数:读取的字符数

判断是否读取到文件尾

 while(inFile && !inFile.eof()){};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存