云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第10章 C++流与文件操作

第10章 C++流与文件操作

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 16:35:38

第10章 C++流与文件操作

主讲内容

10.1 C++流的概念

?C++语言中“流”是指数据的流动。

?“流”既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。 ?数据的输入和输出(简称为I/O)包括以下两方面:

?(1) 标准的输入输出(简称标准 I/0), 即从键盘输入数据,从屏幕输出数据。 ?(2) 文件的输入输出(简称文件 I/0),即从存储介质上的文件输入数据,然后将结果输出到外存储介质 10.2.1 C++中的I/O流库 ?1. I/0 库中常见的流类有:

?(1)ios: 为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstreambase。 ?(2)istream: 通用输入流类 , 支持输入操作。同时继承了输入流类和文件流基类; ?(3)ostream: 通用输出流类 ,同时继承了输出流类和文件流基类;

?(4)iostream: 通用输入输出流类 , 由类 istream 和类 ostream 派生 , 支持输入输出操作。

?(5)ifstream: 输入文件流类 , 由类 istream 所派生 , 支持输入文件操作 ?(6) ofstream: 输出文件流类 , 由 ostream 所派生 , 支持输出文件操作

?(7)fstream: 输入输出文件流类 ,由类 iostream 所派生 , 支持输入输出文件操作。

10.2.1 C++中的I/O流库

? I/0 库常用的流类继承关系如图所示

10.2.2 标准输入输出流对象

?1.输入流对象

?在 C++ 语言中可以有 3 种输入流对象的操作方式:

?(1)cin是类istream的对象,用于从标准输入设备获取数据,使用运算符“>>”

将输入的数据传送给程序中的变量。“cin>>”除可以输入数据外,也可以输入字符; 10.2.2 标准输入输出流对象

?(2)用get()函数输入单个字符,一般的使用方式为:

输入流对象.get();

?该函数返回输入的字符,若遇到输入流中的结束符,则函数返回文件结束标志

EOF(End of File)。

?(3)用getline()函数读入字符串,一般使用格式为:

(字输入流对象.getline符指针,字符个数n) 10.2.2 标准输入输出流对象

?【例10.2】用getline()输入字符串应用举例

?#include ?using namespace std; ?void main()

?{ char ch1[10];

? cout<<\从键盘输入一个少于10个字符的字符串:\? cin.getline(ch1,10); ? cout<

?程序运行后屏幕显示:从键盘输入一个少于10个字符的字符串: ?从键盘输入如一行字符:I Love China! ?则运行结果为:I Love Ch

10.2.2 标准输入输出流对象

?2. 输出流对象

?在 C++ 语言中提供了2种输出流对象的操作方式:

?(1)cout是输出流类ostream的对象,输出结果流向标准的输出设备显示器。

10.2.2 标准输入输出流对象

?常用的输出格式状态:

10.2.2 标准输入输出流对象

?常用输出流控制符

10.2.2 标准输入输出流对象

?ios 类提供公有的成员函数对流的状态进行检测和输入输出格式设置等,下表给出

了每个成员函数的格式和功能说明。 10.2.2 标准输入输出流对象

?(2)用输出流类成员函数 put()输出字符

?C++中如果想输出单个字符,除可以使用“cout<<”语句外,还可以使用输出流函

数put(),其一般格式为:

?输出流对象.put(ch); ?其中ch为要输出的字符。

?【例10.5】用输出流成员函数put()输出单个字符 ?#include ?using namespace std; ?void main()

?{ char str[]=\?for(int i=0;i

?}

?程序运行结果为: ?I Love China!

10.3 文件操作

?文件是一组相关数据的有序集合。

?从用户角度看,文件可分为普通文件和设备文件两种。 ?普通文件是指存储在磁盘或外部存储介质上的数据文件,可以是源文件、目标文件、

可执行文件等。

?设备文件是指与主机相连的各种外部设备,如显示器、打印机、键盘等。

10.3 文件操作

?C++对文件流分为3类:输入流、输出流以及输入/输出流:

?(1)ifstream流类,是从istream类派生的,用于外存文件的输入操作; ?(2)ofstream 流类,是从ostream类派生的,用于外存文件的输出操作;

?(3)fstream 流类,是从iostream类派生的,用于外存文件的输入和输出操作。 ?定义流文件对象的一般格式为

fstream 流对象名;

10.3.1 文件的打开与关闭

?1.打开文件

?文件在进行读写操作前,应先打开,文件打开方式的一般格式为: ?文件流对象名.open(“文件名”,文件打开模式) ?文件名可包含路径说明。 ?文件打开模式 :

10.3.1 文件的打开与关闭

?2.关闭文件

? 当对一个文件的读写操作完成后,为了保证数据安全,切断文件与流的联系,应

及时关闭文件。

?关闭文件的一般格式为:

流对象名.close()

10.3.2 文本文件读写操作

?文本文件的读写操作分为顺序读写和随机读写两种。 ?1. 顺序读写文件

?顺序读写是指从文件头一直读或写到文件尾,通常采用get(),getline(),put(),

read()或write()等函数来完成对文件的读写操作。 10.3.2 文本文件读写操作

?【例10.7】从键盘上输入若干行文本字符到dat文件中,直到按下Ctrl+z组合键为止(此组合键代表文件结束符EOF) ?#include

?#include ?using namespace std; ?void main(void) ?{ char ch;

?ofstream f2( \定义f2为流对象名,并在当前目录下建立(默认

打开)一个wr2的文本文件 10.3.2 文本文件读写操作

?if(!f2){cerr<<\?exit(1);}

?ch=cin.get(); //从cin字符中提取一个字符到ch中 ?while(ch!=EOF){

? f2.put(ch); //把ch字符写入到f2流中 ? ch=cin.get();} ?f2.close(); ?}

?此程序运行后,将在当前目录下建立了一个wr2.txt的文本文件。 10.3.3 二进制文件的读写操作

?对二进制文件的读写可采用两种方法:一种是使用

read()和write()。

get()和put();另一种是使用

?(1)用read()和write()读写二进制文件 ?这两个成员函数的一般格式为:

文件流对象.read(字符指针buffer , 长度len); 文件流对象.write(字符指针buffer , 长度len); 10.3.3 二进制文件的读写操作

?2、用put()和get()读写二进制文件

?【例10.11】将一字符串写入到二进制文件mybinary.dat中,然后再依次读取二进制文件中的字符,并显示在屏幕上,最后输出数字字符的个数。 ?#include

?#include //文件流操作的预编译处理命令 ?using namespace std; ?void main() ?{ char ch; ?int n=0; ?fstream f1;

?f1.open(\10.3.3 二进制文件的读写操作 ?if(!f1)

?{ cout<<\? exit(1);

搜索更多关于: 第10章 C++流与文件操作 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第10章 C++流与文件操作 主讲内容 10.1 C++流的概念 ?C++语言中“流”是指数据的流动。 ?“流”既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。 ?数据的输入和输出(简称为I/O)包括以下两方面: ?(1) 标准的输入输出(简称标准 I/0), 即从键盘输入数据,从屏幕输出数据。 ?(2) 文件的输入输出(简称文件 I/0),即从存储介质上的文件输入数据,然后将结果输出到外存储介质 10.2.1 C++中的I/O流库 ?1. I/0 库中常见的流类有: ?(1)ios: 为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstream

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com