C++流和文件流
2010年08月12日
C++流和文件流收藏
在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先是打开操作,使流和文件发生联系,建立联系后的文件才允许数据流入和流出,输入或输出结束后,使用关闭操作使文件与流断开联系。
标准输入输出流(cout、cin)在使用过程中,只要在程序的开头嵌入相应的头文件"iostream.h"即可。
文件的打开和关闭是通过使用fstream类的成员函数open和close来实现的,fstream类用来对文件流进行操作,fstream类的头文件是fstream.h。
1.数据的输出cout
cout是标准输出设备即显示器(默认设备)连接的预定义输出流。C++语言的插入运算符"输入一个换行符并刷新流
2.数据的输入cin
cin是与标准输入设备即键盘(默认设备)连接的预定义输入流。它从输入流中取出数据,数据从输入提起运算符">>"处流进程序。
输入流对象cin输入数据的语句格式为:
cin>>变量名1>>变量名2>>……>>变量名n;
其中,">>"是输入操作符,用于从cin输入流中取得数据,并将取得的数据传送给其后的变量,从而完成输入数据的功能。
注意:">>"操作符后除了变量名外不得有其他数字、字符串,否则系统会报错。
3.文件流及其有关的类
文件是存储在磁盘、磁带等外部设备上的数据的集合,每一个文件都必须有一个唯一的文件名称。在使用文件前必须首先打开文件,使用完毕后必须关闭文件。对文件的操作是由文件流类完成的。文件流类在流与文件之间建立连接。下图是与文件操作相关的类及其继承关系。
ios
istream
ostream
ifstream
iostream
ofstream
fstream
ios
istream
ostream
ifstream
iostream
ofstream
fstream
图1 几个与文件处理相关的类及其继承关系结构图
下表是常用的I/O流类库的说明,以及在编程中需要包含到程序中的头文件。
表2 常用I/O流类库说明
类名说明编程中需要包含的头文件
ios 流基类,是抽象类 ostream.h
istream 通用输入流类和其它输入流类的基类 iostream.h ifstream 输入文件流类 fstream.h
ostream 通用输出流类和其它输出流类的基类 iosream.h.
ofstream 输出文件流类 fstream.h
iostream 通用I/O流类和其它I/O流的基类 iostream.h
fstream I/O文件流类 fstream.h
4.文件的打开与关闭
对文件的操作是由文件流类完成的。文件流类在流与文件间建立连接。由于文件流分为三种:文件输入流、文件输出流、文件输入/输出流,所以相应的必须将文件流说明为ifstream、ofstream和fstream类的对象,然后利用文件流的对象对文件进行操作。
对文件的操作过程可按照一下四步进行:即定义文件流类的对象、打开文件、堆文件进行读写操作、关闭文件,下面分别进行介绍。
(1)定义文件流对象
利用文件流类可以定义文件流类对象,方法是:
文件流类对象名;
如:
ifstream ifile; //定义一个文件输入流对象
ofstream ofile; //定义一个文件输出流对象
fstream iofile; //定义一个文件输出/输入流对象
(2)打开文件
定义了文件流对象后,就可以利用其成员函数open()打开需要操作的文件,该成员函数的函数原型为:
void open(const unsigned char *filename,int mode,int access=filebuf:openprot);
其中:filename是一个字符型指针,指定了要打开的文件名;mode指定了文件的打开方式,其值如下表所示;access指定了文件的系统属性,其取值为:
0 一般文件
1 只读文件:
2 隐藏文件
3 系统文件
表3 在ios类中定义的文件打开方式
文件打开方式含义
ios::in 以输入(读)方式打开文件
ios::out 以输出(写)方式打开文件
ios::app 打开一个文件使新的内容始终添加在文件的末尾
ios::ate 打开一个文件使新的内容添加在文件尾,但下次添加时,写在当前位置处
ios::trunc 若文件存在,则清除文件所有内容;若文件不存在,则创建新文件
ios::binary 以二进制方式打开文件,缺省时以文本方式打开文件
ios::nocreate 打开一个已有文件,若该文件不存在,则打开失败
ios::noreplace 若打开的文件已经存在,则打开失败
说明:
1)在实际使用过程中,可以根据需要将以上打开文件的方式用"|"组合起来。如:
ios::in|ios::out 表示以读/写方式打开文件
ios::in|ios:: binary 表示以二进制读方式打开文件
ios::out|ios:: binary 表示以二进制写方式打开文件
ios::in|ios::out|ios::binary 表示以二进制读/写方式打开文件
2)如果未指明以二进制方式打开文件,则默认是以文本方式打开文件。
3)对于ifstream流,mode参数的默认值为ios::in,对于ofstream流,mode的默认值为ios::out。
(3)文件的关闭
在文件操作结束(即读、写完毕)时应及时调用成员函数close()来关闭文件。该函数比较简单,没有参数和返回值。
利用对象和相应的成员函数对文件进行读写操作,我们将单独介绍。
5.文件的读写操作
在打开文件后就可以对文件进行读写操作了。从一个文件中读出数据,可以使用文件流类的get、getline、read成员函数以及运算符">>";而向一个文件写入数据,可以使用其put、write函数以及插入符"read(char *pch,int count) 从文件中读取多个字符,读取个数由参数counnt决定
put(char ch) 向文件写入一个字符
write(const char *pch,int count) 向文件写入多个字符,字符个数由count决定
顺序文件操作:这种操作方式只能从文件的开始处依次顺序读写文件内容,而不能任意读写文件内容。
从一个文件中读出数据,可以使用get、getline、read成员函数以及运算符">>";而向一个文件写入数据,可以使用put、write成员函数以及插入符"<<"。
发表评论
-
整理下OSS方面的资料,免得到处找,linux音频编程,open sound system
2012-01-20 00:12 789整理下OSS方面的资料,免 ... -
文件操作小结
2012-01-20 00:12 762文件操作小结 2010年08 ... -
从DOS命令到制作IMG的详细教程
2012-01-20 00:12 505从DOS命令到制作IMG的详细教程 2010年06月20日 ... -
从头开始编写操作系统(8) 第7章:系统结构
2012-01-20 00:12 695从头开始编写操作系统( ... -
东方文花帖
2012-01-19 01:04 484东方文花帖 2010年10月07日 中文名:东 ... -
Java
2012-01-19 01:04 497Java 2010年06月22日 运行结果 ... -
JDK1.5 JDK1.6 各自的新特性
2012-01-19 01:04 671JDK1.5 JDK1.6 各自的新特 ... -
Photoshop常见问答集
2012-01-19 01:04 476Photoshop常见问答集 ... -
一个PS高手的话,对初学者很实用
2012-01-19 01:04 658一个PS高手的话,对初学 ... -
(转)BMP文件格式详解(BMP file format)
2012-01-17 00:27 675(转)BMP文件格式详解(BMP ... -
【转】最经典格式之BMP图片格式,转来的~
2012-01-17 00:27 566【转】最经典格式之BMP图片格式,转来的~ 2010年08月 ... -
C语言 BMP图片处理
2012-01-17 00:27 720C语言 BMP图片处理 2011年11月12日 C语言 ... -
bmp另类加密解密方法
2012-01-17 00:27 732bmp另类加密解密方法 2011年03月19日 ... -
BMP文件格式、
2012-01-17 00:27 333BMP文件格式、 2011年09 ... -
成人笑话大全第019篇
2012-01-16 13:52 504成人笑话大全第019篇 20 ... -
高中生自我评语 高中毕业生自我鉴定
2012-01-16 13:52 746高中生自我评语 高 ... -
演讲稿大全
2012-01-16 13:52 514演讲稿大全 2010年11月17日 演讲稿大全 ?? ... -
三年级如何写作文
2012-01-16 13:52 497三年级如何写作文 2011年10月27日 三年级如何写 ...
相关推荐
通过本章学习,应理解I/O流、流类与流类体系的概念,...了解C++有关文件的概念及文件的使用方法,理解文件流类体系结构,掌握实现文件操作的成员函数的使用方法,学会文本文件的打开、读/写、关闭等操作的编程方法。
C++文件读写流样板
C++文件流 建立工程,实现C++的文件流
IOFileDemo使用C++的文件流进行文件管理实例源码。
Visual C++源代码 55 如何使用缓冲流复制文件Visual C++源代码 55 如何使用缓冲流复制文件Visual C++源代码 55 如何使用缓冲流复制文件Visual C++源代码 55 如何使用缓冲流复制文件Visual C++源代码 55 如何使用缓冲...
C++文件流操作的读与写,这里是作者初学的一些终结,希望各位海涵啊
对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入...
记下输入输出流、文件流、字符串流的常见操作。
此PPT中,详细讲述了C++流的概念。包括:C++的输入和输出;标准输出流;标准输入流;文件操作与文件流;字符串流。
C++实现h264码流保存为FLV文件,支持h264文件转flv文件,也支持保存网络直播码流为flv文件。含例子demo
C++ MP4v2获取rtsp流并保存为MP4文件,ffmpeg版本为4.0.1,其中的dll,lib,include在程序中已经提供,编译环境为vs2012
C++标准库中文件流读取操作小结 C++标准库中文件流读取操作小结
C++流与文件。
这份代码是打开PCM裸流文件并截取一段数据然后播放的,可以轻松的经过加一条线程的方式改成网络传输的形式。
该小系统是用c++类 链表和文件流来写的。。。没有用结构体,内附源代码。对在链表 文件流方面薄弱的同学很有学习的价值
C++string常用函数,c++文件流操作,C++中的日期和时间
在C++中将数据输出到文件需要用到文件流,将数据输出到文件(即下图中的写文件)时会用到ofstream 类.下面就具体介绍如何将一段字符或数据输出到文件中并保存
在Windows平台对文件进行存取操作可选的方案有很多,... fstream有两个派生类,即ifstream和ofstream,分别对应输入文件流、输出文件流。在使用它们之前,必须将它们的头文件包含到你的cpp文件中。创建一个文件流的方
本Demo是基于VS2010的c++的实现文件转二进制,二进制转文件工程。代码中是通过png图片作为文件,同理可用于有其他类型的文件。
详细介绍了C++语言的流类体系与文件操,并附有大量的实例程序!