`
saybody
  • 浏览: 867419 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

C++学习摘要之九:C++流和文件流

阅读更多

第九章C++流和文件流

在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先是打开操作,使流和文件发生联系,建立联系后的文件才允许数据流入和流出,输入或输出结束后,使用关闭操作使文件与流断开联系。
标准输入输出流(cout、cin)在使用过程中,只要在程序的开头嵌入相应的头文件“iostream.h”即可。
文件的打开和关闭是通过使用fstream类的成员函数open和close来实现的,fstream类用来对文件流进行操作,fstream类的头文件是fstream.h。
cout是标准输出设备即显示器(默认设备)连接的预定义输出流。C++语言的插入运算符“<<”向输出流发送字符,cout是数据的目的地,插入运算符“<<”把数据传送到cout。
输出流对象cout输出数据的语句格式为:
cout<<数据1<<数据2<<……<<数据n;
其中,“<<”是输出操作符,用于向cout输出流中插入数据。
在cout中还可以使用流控制符控制数据的输出格式,但要注意使用这些流控制符时,要在程序的开始部分嵌入头文件“iomanip.h”。
常用的流控制符及其功能如下表所示:
1 I/O流的常用控制符
Dec
十进制数输出
Hex
十六进制输出
Oct
八进制数输出
setfill©
在给定的输出域宽度内填充字符c
setprecison(n)
设显示小数精度为n位
setw(n)
设域宽为n个字符
setiosflags(ios::fixed)
固定的浮点显示
setiosflags(ios::scientific)
指数显示
setiosflags(ios::left)
左对齐
setiosflags(ios::right)
右对齐
setiosflags(ios::skipws)
忽略前导空白
setiosflags(ios::uppercase)
十六进制数大写输出
setiosflags(ios::lowercase)
十六进制数小写输出
setiosflags(ios::showbase)
当按十六进制输出数据时,前面显示前导符0x;当按八进制输出数据时,前面显示前导符0
Endl
输入一个换行符并刷新流
cin是与标准输入设备即键盘(默认设备)连接的预定义输入流。它从输入流中取出数据,数据从输入提起运算符“>>”处流进程序。
输入流对象cin输入数据的语句格式为:
cin>>变量名1>>变量名2>>……>>变量名n;
其中,“>>”是输入操作符,用于从cin输入流中取得数据,并将取得的数据传送给其后的变量,从而完成输入数据的功能。
注意:“>>”操作符后除了变量名外不得有其他数字、字符串,否则系统会报错。
文件是存储在磁盘、磁带等外部设备上的数据的集合,每一个文件都必须有一个唯一的文件名称。在使用文件前必须首先打开文件,使用完毕后必须关闭文件。对文件的操作是由文件流类完成的。文件流类在流与文件之间建立连接。下图是与文件操作相关的类及其继承关系。
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
对文件的操作是由文件流类完成的。文件流类在流与文件间建立连接。由于文件流分为三种:文件输入流、文件输出流、文件输入/输出流,所以相应的必须将文件流说明为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()来关闭文件。该函数比较简单,没有参数和返回值。
利用对象和相应的成员函数对文件进行读写操作,我们将单独介绍。
在打开文件后就可以对文件进行读写操作了。从一个文件中读出数据,可以使用文件流类的get、getline、read成员函数以及运算符“>>”;而向一个文件写入数据,可以使用其put、write函数以及插入符“<<”,如下表所示:
4 文件流类的文件操作成员函数
函数原型
get(char &ch)
从文件中读取一个字符
getline(char *pch,int count,char delim=’\n’)
从文件中读取多个字符,读取个数有参数count决定,参数delim 是读取字符是指定的结束符(默认为换行字符)
read(char *pch,int count)
从文件中读取多个字符,读取个数由参数counnt决定
put(char ch)
向文件写入一个字符
write(const char *pch,int count)
向文件写入多个字符,字符个数由count决定
顺序文件操作:这种操作方式只能从文件的开始处依次顺序读写文件内容,而不能任意读写文件内容。
从一个文件中读出数据,可以使用get、getline、read成员函数以及运算符“>>”;而向一个文件写入数据,可以使用put、write成员函数以及插入符“<<”。
分享到:
评论

相关推荐

    poco/c++开源库学习资料打包下载

    POCO_C++库学习和分析_--__随机数和数字摘要.docx POCO_C++库学习和分析_--_Cache.docx POCO_C++库学习和分析_--_UUID.docx POCO_C++库学习和分析_--_进程.docx POCO_C++库学习和分析_--_流_(一).docx POCO_C++库...

    基于C++实现 MD5 算法的文件完整性校验程序【100010122】

    基于 MD5 算法的文件完整性校验程序,本实验使用 C++ 语言在 Linux 平台进行编程和运行。 ./md5 -h 查看帮助 ./md5 -t 打印程序的测试信息 ./md5 -c nankai.txt 计算出的被测文件的 MD5 摘要并打印 ./md5 -v nankai....

    操作系统-课程设计-超级马里奥游戏设计实现(Qt&amp;C++实现)

    操作系统-课程设计-超级马里奥游戏设计实现(Qt&C++实现)包含以下两部分文件: 1.【报告】分为六章进行展示,包括摘要、参考文献,正文部分为包括前言、主要任务、总体设计、详细设计、遇到的问题和解决方法,以及...

    C++模拟实现的一个VFS(虚拟文件系统)

    自己在操作系统课程设计时做的模拟实现VFS系统...(里面有报告和源代码,标准C++代码可以在Linux通过g++编译) 摘要:本文利用虚拟文件系统(VFS)思想,建立一个统一的接口框架。并基于此接口实现了一个简单的文件系统。

    C++实现对数据的SHA-256加密算法

    C++实现对数据的SHA-256加密算法

    C语言GUI学习项目:基于C++&Qt编写的一个简易计算器和打车计费系统.zip

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    VC/C++源码,加密解密,MD5,加密算法

    摘要:VC/C++源码,加密解密,MD5,加密算法 VC++源代码写的用于md5加密算法的一个DLL组件源码,虽然是半成品,不过学习一下VC++中编写DLL也是不错的选择,另外还可以研究MD5加密算法具体实施代码。 运行环境:Windows/...

    C与C++高级图形程序设计完整版

    C与C++高级图形程序设计完整版 内容摘要: 附录与关键词: 计算机图形学 程序设计 程序设计 计算机图形学 全文目录 目录 为什么要阅读本书 前言 第一章 数学模块 鸣谢 第一部 分通用程序 第二章 图形界面模块 第三章 ...

    清华大学内部版-C与C++高级图形程序设计-名校真给力

    清华大学内部版-C与C++高级图形程序设计-名校真给力 C与C++高级图形程序设计完整版 内容摘要: 附录与关键词: 计算机图形学 程序设计 程序设计 计算机图形学 全文目录 目录 为什么要阅读本书 前言 第一章 ...

    编译原理-课程设计-基于编译原理的公式计算器设计与实现(QT&C++实现)

    编译原理-课程设计-基于编译原理的公式计算器设计与实现包含以下三部分文件: 1.【报告】分为七章进行展示,包括摘要、参考文献,正文部分为包括概述、使用的基本概念和原理、总体设计、详细设计、编码实现、测试和...

    C/C++课程设计:通讯录管理系统(含课程设计报告书,支持答辩)

    采用C/C++进行编程,附带完整的课程设计报告书(含至少摘要、目录、问题描述、系统需求分析、系统设计、系统实现、总结和参考文献等),可支持答辩! 本资源中的通讯录管理系统是包含多个联系人的多个属性(含姓名...

    解三角形,C++算法代码

    摘要:VC/C++源码,算法相关,三角形,算法  解三角形,冰火天空软件,6种情况解三角形,包括各边,各角,面积,内切圆,外接圆,三高等三角形特征计算。并且可以输出计算过程。另外可以随机产生试卷和答案。  使用时...

    C++经典语法与应用实例源码

    摘要:VC/C++源码,其它分类,Appwizard  C++经典语法与应用,类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、  析构函数先后调用顺序,如何在派生类构造函数中向基类的...

    C++ XModem和YModem文件传输

    摘要:VC/C++源码,网络相关,XModem,文件传输 XModem和YModem文件传输源码。C++程序实现,供C程序员参考研究。

    VC++使用DEF文件导出函数

    摘要:VC/C++源码,系统相关,DEF,导出函数  VC++使用DEF文件导出函数,DEF导出函数以DLL文件的形式,最终编译后生成DLL文件,下载包内为源码文件包。

    C++ MD5信息摘要源代码

    c++编写的面向对象的MD5信息摘要源代码,包括类头文件和函数定义cpp文件

    C++课程设计报告(学生学籍管理系统).doc

    9 结论 16 后记 16 参考文献 17 【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出 等功能,从而能够对信息进行处理。程序中运用了相关类的知识,同时定义了一定数量 的数据...

    C++教师排课系统课程设计报告+代码.zip

    C++教师排课系统课程设计报告+完整代码: 包含文件操作,链表,容器类,继承,友元,静态数据成员,运算符重载,构造函数,析构函数等。 摘要 第一章:绪论 第二章:背景分析 第三章:程序具体分析 第四章:程序类图...

    AVPlayer C++基于MFC的MPEG播放器源码

    摘要:VC/C++源码,多媒体技术,播放器,MFC  AVPlayer一款在VC.NET环境下实现的MFC播放器,实现对MPEG文件的播放,请在VC.NET环境下编译源码。 来源:乐乐源码(www.lelecode.com)

Global site tag (gtag.js) - Google Analytics