~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:VS2015与 C++
撰写时间:2019/07/17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C++把文件看成无结构的字节流,
编码方式:文本方式;二进制方式。
存储方式:顺序存储;随机存储。
ifstream、ofstream和fstream类用于内存与文件之间的数据传输。
ifstream;读文件;fstream:读/写文件;ofstream:写文件。
打开和关闭文件:
基本操作:打开文件; 读/写文件; 关闭文件。
打开文件需要建立流对象,与外部文件关联,指定文件打开方式。
打开文件有两种方式:
首先建立流对象,然后调用fstream::open()函数连接外部文件
流类 对象名;
对象名.open(文件名,方式);
调用流类带参数的构造函数,建立流对象的同时连接外部文件
流类 对象名(文件名,方式);
open函数原型:void open(const char * ,int mode,int = filebuf::openprot);
filebuf、ifstream、ofstream、fstream的构造函数具有相同的参数和缺省值。
文件流的构造函数和 open() 函数用于打开文件,析构函数在流对象被删除之前关闭文件。
open第一个参数为相关关联的文件名;第二个参数为文件的打开方式;第三个参数是文件的保护方式,一般只用缺省值。
mode参数文件打开方式:
标识常量 | 值 | 意义 |
ios::in | 0x0001 | 读方式打开文件 |
ios::out | 0x0002 | 写方式打开文件 |
ios::ate | 0x0004 | 打开文件时,指针指向文件尾 |
ios::app | 0x0008 | 追加方式 |
ios::trunc | 0x0010 | 删除文件现有内容 |
ios::nocreate | 0x0020 | 如果文件不存在,则打开操作失败 |
ios::noreplace | 0x0040 | 如果文件存在,则开开操作失败 |
ios::binary | 0x0080 | 二进制方式打开,默认为文本方式 |
文件的保护模式:
filebuf::openprot | 适应MS-DOS模式 |
filebuf::sh_compat | 适应MS-DOS模式 |
filebuf::sh_none | 无模式 |
filebuf::sh_read | 读模式 |
filebuf::sh_write | 写模式 |
例子:
读: ifstream Infile;
Infile.open(“date.dat”,ios::in);
写: ofstream Outfile;
Outfile.open(“date.dat”,ios::out);
关闭文件:
关闭文件操作包括把缓冲区数据完整地写入文件,添加文件结束标志,切断流对象和外部文件的连接。
若流对象生存期没有结束,可以重用。
当一个流对象的生存期结束,系统也会自动关闭文件。
例子:
ifstream Infile;
Infile.open(“date.dat”,ios::in);
Infile.close();
文本存储:
文本文件用默认方式打开;文本文件用文本流进行读/写操作;
文本文件是顺序存取文件;描述一个对象信息称为一个记录;
文本文件本身没有逻辑结构;
通常一个逻辑记录用换行符分隔;数据项之间可以用空白符、换行符、制表符等分隔。
使用格式控制建立的文本文件:
ofstream ost;
ost.open("mytxt.txt");
int a = 1000;
ost << a << endl;
ost << setw(10) << a << endl;//写入宽度
ost << setw(10) << setiosflags(ios::right);