C教程从入门到精通
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件流
•打开和关闭文件 •读写文本文件 •读写二进制文件 •其他I/O函数
文件流
• 为了不同的目的,可以使用3种流:文件输入
流、文件输出流和文件输入/输出流。
• 它们分别由类ifstream, 类ofstream和
fstream定义
打开文件
• 在定义了流之后,就可以在流上执行open操作来实
现文件的打开。
使用ios成员函数进行格式化输入 输出
• 所有的流都有一套与它相关的格式标识,这
些标识用于格式化流中的数据。
• 类ios就定义了一个fmtflags数据成员,这个
数据成员以枚举的方式定义了很多的常量来 表示输出的格式。
fmtflags掩码枚举中定义的格式标 识
ios中定义的常用成员函数
简单使用ios进行格式化输出
• 而put()函数将ch中保存的字符放到ostream流中,并
返回对流的引用
编写一个程序读取任何文件的内容
使用put()函数将字符串写入文件
read和write
• 使用get和put只能对文件读入和输出单个字符,而
使用read和write则可以读入和输出一块字符。read 和write也是流类的成员函数。
• 原型
–istream &read(char *buf, streamsize num); –ostream &write(const char *buf, streamsize num); –其中:read的作用是从相关流中读取num所指定的字节数
的数据,并将它们放到buf所指定的缓冲区中;wirte的作 用是从buf所指定的缓冲区中将num个字节的数据输出到相 关流中;streamsize是使用typedef定义的整数类型。
• 每种流都有这个成员函数,惟一的区别是参数的取
值不同。 –第一个参数是一个指向字符的指针,用于传入表示文件名
的字符串;
–第二个参数指定文件的打开模式,不同流的open成员函数
的这一项取值互不相同。
• open函数原型如下:
• void ifstream::open(const char *filename, ios::openmode); • void ofstream::open(const char *filename, ios::openmode); • void fstream::open(const char *filename, ios::openmode);
文件打开模式的取值
关闭文件
• 在打开文件并对文件进行了相关的操作之后,
必须对控制流执行关闭操作,就是执行相关 流的close成员函数。
• close成员函数没有参数,也没有返回值。
读写文本文件
• 使用“<<”和“>>”运算符
读写文本文件的例子
读写二进制文件
• 为了能够存储文本文件不能够存储的非格式
重载I/O运算符
• 由于“>>”的作用是向流中插入,“<<”的作用是从流中提
取,所以把重载这两个运算符的函数称为插入函数和提取函 数。
–插入函数的通式:
ostream &operator<<(ostream &stream, 类名 obj) {
//需要输出数据的相关代码 return stream; }
• 对流可以进行的最基本的操作是:打开和关闭。打
开流可以让流连接到文件,而关闭操作可以让流断 开与文件的连接
预定义的C++流
• cin
–标准输入流
• cout
–标准输出流
• cerr
–连接到标准输出的流,用于写入调试和错误信息 –采用非缓冲的方式
• clog
–连接到标准输出的流,用于写入调试和错误信息 –以缓冲的形式工作
• 使用put和get可以实现对流中单个字符的输
入和输出。
• get函数和put函数的函数原型是:
–istream &get(char &ch); –ostream &put(char &ch); –其中
• get函数从istream中读取一个字符放置在ch中,并返
回对流的引用。如果到达流的末尾,就会返回一个 false;
取消与测试输出格式的设置
使用width, precision和fill进行 格式设置
使用操控符实现格式化输入输出
• 操控符就是一系列的函数,这些函数可以包
含在I/O表达式中更改流的格式参数
使用操控符
用户自定义操控符
• 与C++预定义的操控符一样,可以定义输入用的操控
符,也可以定义输出用的操控符。
第8章 I/O系统和文件
流 格式化I/O 文件流
流
•流的概念 •预定义的C++流 •重载I/O运算符
流
• 流是一种生成或使用信息的抽象。C++的I/O系统把
流连接到物理设备上,它的一个重要特点是不论它 所连接的设备是什么,都采用相同的方式进行操作。
• 流有两种基本形式:文本流和二进制流。
–文本流用于传递字符 –二进制流用于传递所有数据类型的数据。
使用wirte成员函数向文件中写入 数据
使用read成员函数读取文件中的数 据
重载的get函数
• 最常用的几个重载函数原型如下:
–istream &get(char *buf, streamsize num); –istream &get(char *buf, streamsize num,char
化信息,就需要使用二进制文件。
• 创建二进制文件的方法
–以ios::binary模式创建文件,并采用这种方法
对文件进行读取。
• 二进制文件不可以使用“>>”和“<<”进行
输入输出,为了实现输入输出可以使用下面 的两种方法:一是使用成员函数put和get; 二是使用成员函数read和write。
put和get
• 定义输出操控符的方法如下:
• ostream &操控符名(ostream &stream)
•{
•
用户代码;
•
return stream;
•}
• 定义输入操控符的方法如下:
• istream &操控符名(istream &stream) •{
• 用户代码;
• return stream; •}
建立一个输出操控符set和一个输 入操控符prompt
–定义提取函数的通式是:
istream &operator>>(istream stream, 类名 &obj) {
//需要输入数据的相关代码 return stream; }
创建一个插入函数
定义一个是友元函数的插Βιβλιοθήκη Baidu函数
定义提取函数
格式化I/O
•使用ios成员函数进行格式化输入输出 •使用操控符实现格式化输入输出