输入输出流3

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术: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);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值