1、内存中数据的存储是临时的,而用文件存储的数据是永久的——文件被储存在辅助存储设备中,如硬盘、CD、DVD、闪存驱动器和磁带
特点
每个文件都以一个文件结束符或者以存储在 *** 作系统维护、管理的数据结构中的一个特定字节数
文件处理模板typedef ifstream
是一个对basic_ifstream
的特化,允许文件输入字符
typedef ofstream
是一个对basic_ofstream
的特化,允许文件输出字符
typedef fstream
是一个对basic_fstream
的特化,允许文件输入、输出字符
注意:该模板都是从basic_iostream\basic_istream\basic_ostream
中“继承”而来,包含其所有的成员函数
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();
用于高速下一个文件输入/输出的字节号
成员函数write()
从文件中“put”文件定位指针的位置开始输出固定数目的字节到指定的流
成员函数read()
从文件“get”文件定位指针的位置开始读入固定数目的字节数据
write()
输出字节数据
outputFile.write(reinterpret_class="superseo">cast
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
第一个参数:要求的参数类型为char *
,需用强制类型转换
第二个参数:读取的字符数
判断是否读取到文件尾
while(inFile && !inFile.eof()){};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)