visualc++60第九章.ppt
《visualc++60第九章.ppt》由会员分享,可在线阅读,更多相关《visualc++60第九章.ppt(20页珍藏版)》请在装配图网上搜索。
1、1 第 九 章 C+的 I/O流 库9.1 流9.2 磁 盘 文 件 9.3 程 序 举 例 2 9.1流 内 存 设 备数 据数 据输 出输 入 3 标 准 输 出 流 cout cout是 系 统 定 义 过 的 ostream类 的 一 个 对 象 , 该 类 提 供 的 多种 输 出 功 能 都 适 用 于 cout,包 括 : 使 用 流 插 入 操 作 符 ( ) 输 出 各 种 数 据通 过 成 员 函 数 put输 出 字 符通 过 成 员 函 数 write输 出 字 符 串1.成 员 函 数 put的 使 用 格 式 : 作 用 为 在 屏 幕 上 输 出 一 个 字 符
2、, 返 回 值 为 ostream类 对 象 的 引 用 , 故 函 数 可 以 连 续 调 用 。cout.put(char c)cout.put(const char c)或 字 符 变 量 字 符 常 量 4 #include iostream.hvoid main()char ch=A; cout.put(ch)endl; cout.put(O).put(k)endl;例 9.1 连 续 调 用2.成 员 函 数 write的 使 用格 式 :作 用 是 将 一 个 字 符 串 的 部 分 或 全 部 内 容 在 屏 幕 上 输 出 。该 函 数 的 返 回 值 为 ostream类
3、对 象 的 引 用 , 故 函 数 可 以 连 续 调 用 。cout.write(const char *str,int n)字 符 数 组 或 字 符 指 针输 出 的 字 符 个 数 5#include iostream.h#include void main()char *ch=ABCDEFGHIJKLMN; cout.write(ch,10).put(n); /输 出 该 字 符 串 的 前 10个 字 符 cout.write(ch,strlen(ch)) 输 入 数 据通 过 成 员 函 数 get输 入 字 符 或 字 符 串通 过 成 员 函 数 read输 入 字 符 串1
4、.成 员 函 数 get的 使 用 格 式 : 作 用 为 从 键 盘 上 输 入 一 个 字 符 给 内 存 变 量 chcin.get(char ch)ch=cin.get( )或 字 符 变 量 注 意 : 空 白 符 作 为 有 效 字 符 被 读 入 , 不 同 于 使 用 提 取 符 ( ) 7 例 9.3 统 计 字 符 串 中 包 含 的 字 符 个 数#include iostream.hvoid main()int count=0;char ch;coutinput a serial of characters:endl;while(ch=cin.get()!=EOF) /
5、 按 ctrl+z结 束 输 入coutch; count+;coutcountch程 序 结 果 又 如 何 ?3.对 比 两 种 输 入 方 法 的区 别 8 使 用 get成 员 函 数 读 入 一 行 字 符 串 , 也 可 以 用 成 员 函 数 getline实 现 , 形 式 如 下 :cin.get(char *buf,int size,char ch) cin.getline(char *buf,int size,char ch)存 放 字 符 串 的 字 符数 组 或 字 符 指 针 限 定 最 大 字 符 个 数不 能 超 过 size-1 指 定 的 结 束 符 ,该
6、字 符 不 包 含 在字 符 串 中 , 默 认结 束 符 为 n 9 #include iostream.h#include string.hvoid main()int line,max=0; char s50,t50; coutinput a string:max) max=line; strcpy(t,s); coutthe string of longest line is:endl; couttendl; coutit has maxcharactersendl; 例 9.4 找 最 长 串 输 入 一 行 字 符 串 , 最大 长 度 不 能 超 过 49若 改 为 cin.ge
7、tline(s,50, )结 果 如 何 ? 10 2. 成 员 函 数 read的 使 用格 式 :例 9.5 cin. read(char *buf, int size)读 取 到 字 符 数 组 中 的 字 符 个 数( 不 同 于 getline函 数 )#include iostream.h#include string.hvoid main()char ch100; cin.read(ch,10); /读 取 输 入 流 中 的 前 10个 字 符 到 数 组 ch中 coutn The string entered is:n; cout.write(ch,cin.gcount()
8、endl; 对 比 cin.getline(ch,10)的 结 果 11 9.2 磁 盘 文 件1. 打 开 文 件创 建 流 类 对 象 的 同 时 打 开 文 件 ifstream类 操 作 文 件 输 入 ofstream类 操 作 文 件 输 出fstream类 操 作 文 件 输 入 输 出ofstream outfile(abc.dat);fstream outfile(abc.dat, ios:out); 先 创 建 流 类 对 象 、 再 打 开 文 件 o f s t r e a m o u t f i l e ; outfile.open(abc.dat);等 价创 建 的
9、 输出 流 对 象 创 建 的 输 入输 出 流 对 象 以 输 出 形 式打 开 文 件 12 2.关 闭 文 件 outfile.close(); 关 闭 文 件 的 成 员 函 数已 定 义 的 与 某 磁 盘 文件 相 关 联 的 流 类 对 象3.文 本 文 件 的 读 写 对 已 正 确 打 开 的 某 文 本 文 件 , 可 以 通 过 对 与 其 相 关 联 的流 类 对 象 的 如 下 操 作 进 行 读 写使 用 提 取 、 插 入 操 作 使 用 成 员 函 数 get(含 getline)和 put 例 9.6 13 #include stdlib.h#include
10、iostream.h#include fstream.hvoid main()ofstream outfile; outfile.open(abc.txt); /以 写 的 方 式 打 开 文 件 abc.txt if(!outfile) coutabc.txt cant openendl; abort(); /打 开 失 败 , 结 束 程 序 char ch=a; while(ch=z) outfilech; coutch; coutendl; 检 查 文 件 是 否 正 常 打 开到 文 件 尾 返 回 1通 过 插 入 操 作 将 内 存 变量 的 内 容 写 到 文 件 中 14 #
11、includeiostream.h#include fstream.h#include stdlib.hvoid main()char s100; ofstream outf; outf.open(f1.dat); if(!outf) coutcant open f1.datendl; abort(); outfHe is a boy.n; outfShe is a girl.n; outfIm a teacher.n; outf.close(); ifstream inf(f1.dat); while(!inf.eof() inf.getline(s,sizeof(s); coutsendl
12、; 通 过 getline函 数 从 文 件中 读 一 行 字 符 串 到 数 组通 过 插 入 操 作 将 若 干字 符 串 写 到 文 件 中 例 9.7 15 4.二 进 制 文 件 的 读 写 创 建 流 对 象 或 打 开 文 件 时 需 显 式 声 明 文 件 类 型 为 二 进 制ios:binary最 常 用 成 员 函 数 read和 write实 现 读 写可 使 用 提 取 、 插 入 操 作 完 成 读 写 如 : ofstream outfile;outfile.open(file.dat,ios:binary);或 : ofstream outfile(file.d
13、at,ios:binary); 皆 表 示 以 二 进 制 模 式 打 开 文 件 “ file.dat” , 并 将其 与 输 出 流 对 象 outfile相 关 联 。 16 struct studentint num; char name20; double score;stu5;ofstream outfile(file.dat,ios:binary);假 设 有 定 义 :则 可 通 过 如 下 程 序 段 实 现 文 件 的 写 操 作 :for(int i=0;istui.numstui.namestui.score; outfile.write(char *) 将 一 个 记
14、 录 中 的 数 据都 变 为 字 符 进 行 处 理 outfilestui.numstui.namestui.score;也 可 通 过 插 入 符 实 现 17 5.随 机 访 问 文 件 通 过 成 员 函 数 定 位 读 写 文 件 指 针 , 实 现 随 机 访 问操 作 读 指 针 的 成 员 函 数 :istream返 回 读 文 件 指 针 位 置定 位 读 文 件 指 针 位 置 ios:beg 相 对 于 流 开始 处 ios:cur 相 对 于 当 前位 置ios:end 相 对 于 流 结尾 处如 , 假 设 inf是 一 个 istream类 的 流 , 则 :in
15、f.seekg(50,ios:beg);表 示 使 读 指 针 从 流 开 始 位 置 后 移 50字 节 inf.seekg(-50,ios:end); 表 示 使 读 指 针 从 流 结 尾 处 前 移 50字 节 18操 作 写 指 针 的 成 员 函 数 :ostream返 回 写 文 件 指 针 位 置定 位 写 文 件 指 针 位 置 含 义 同 读 指 针 利 用 seekg或 seekp定 位 文 件 指 针 后 , 再 调 用 读 写 成员 函 数 , 便 可 以 实 现 文 件 的 随 机 读 写 , 例 子 见 教 材 p323 19 9.3 程 序 举 例例 9.8 设
16、 计 程 序 实 现 将 给 定 的 文 本 文 件 在 屏 幕 上 分 屏 显 示 的 功 能 #include iostream.h#include fstream.h#include stdio.h#include stdlib.hvoid main()int r; char c; char fn15,buf100; fstream file1; coutfn;/输 入 指 定 的 文 件 名 file1.open(fn,ios:in); if(!file1) coutcant open the file.n; abort(); while(!file1.eof() r=0; /计 数
17、器 代 表 已 显 示 在 屏 幕 上 文 本 的 行 数 while(!file1.eof() /逐 行 读 文 件 coutbufendl; r+; coutpress enter key.; c=getchar(); /键 入 回 车 键 后 显 示 下 一 屏 file1.close(); 20 例 9.9 将 sin(x)在 i(2 /360)( i=0,1,359) 上 的 值 保 存 在 文件 dsin.dat中 , 并 从 该 文 件 中 读 取 数 据 , 以 这 些 数 据 为 基 础 , 计 算sin(x)在 0, 2 上 的 积 分 。 #include fstream
18、.h#include math.h#define SIZE 361#define PI 3.14159#include stdlib.hvoid main( ) double dataSIZE, s=0; for (int i=0; iSIZE; i+)datai=sin(2*i*PI/360); fstream file1; file1.open(dsin.dat,ios:out); if(!file1) coutcant open the file.n; abort(); file1.write (char*)data, sizeof(data); file1.close(); file1.open(dsin.dat,ios:in); if(!file1) coutcant open the file.n; abort(); file1.read(char*)data, sizeof(data); for (i=0; iSIZE; i+) s=s+datai; s=s*(2*PI/360); coutsendl; file1.close(); 将 sin(x)在 02上 的 值 写 入 文 件dsin.dat 梯 形 法 求 积 分
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。