第9章 IO流标准库.ppt_第1页
第9章 IO流标准库.ppt_第2页
第9章 IO流标准库.ppt_第3页
第9章 IO流标准库.ppt_第4页
第9章 IO流标准库.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章C I O流标准库 韩格2010年9月 提纲 I O流概述常用I O流成员函数文件I O流的使用随机方式读 写文件 9 1I O流概述 程序中的输入 输出操作 CPU 内存 Xy 2 3 cin x y 32 32 输出设备 输入设备 cout x y 9 1I O流概述 I O流C 语言把数据之间的传输操作称作流 每个流都是一种与设备相联系的对象 输入流 由外部设备流向内存的数据流 从输入流中获取数据的操作称为输入 读或提取操作 输出流 由内存流向外部设备的数据流 将数据放入输出流的操作称为输出 写或插入操作 I O操作的要素 指定I O设备 I O操作类型和方式 操作对象 9 1I O流概述 C I O流类库C 系统提供的完成I O操作的一组类 主要包括 标准流类 处理与标准输入设备 键盘 和输出设备 显示器 关联的数据流文件流类 处理与磁盘文件关联的数据流字符串流类 利用内存中的字符数组处理数据的输入输出异常类等 处理异常错误 9 1I O流概述 常用I O流类列表 9 1I O流概述 使用I O流的基本步骤声明I O流类的对象 首先打开操作 使流和设备 文件 发生联系 完成流对象的输入或输出操作 输入或输出结束后 使用关闭操作使文件与流断开联系 9 1I O流概述 常见的I O流类 头文件和对象标准I O类 istream ostream iostream标准I O头文件 iostream标准I O流类对象 cin istream类的对象 处理标准输入设备的输入 cout ostream类的对象 处理标准输出设备的输出 cerr ostream类的对象 处理在标准输出设备上输出错误信息 非缓冲 clog ostream类的对象 处理在标准输出设备上输出错误信息 缓冲 9 1I O流概述 输入输出方法C 标准库中已重载的通用流运算符 提取运算符 输入 从流中获取数据到内存 插入运算符 输出 将内存数据添加到流中输出 注意 C 已重载的通用流运算符只能处理基本的数据类型的数据 如果要处理自定义的类型数据需要用户来重载 9 2常用I O流成员函数 常用的输出流成员函数put函数 该函数的用法是 输出流对象名 put ch 该函数仅输出存储在ch中的一个字符 且返回当前输出流对象 例如 cout put A 屏幕输出 A 9 2常用I O流成员函数 write函数该函数的用法是 输出流对象名 write s n 该函数输出字符指针s与所指向的字符串中的n个字符 当s所指字符串不足n时补空格 返回当前输出流对象 例如 cout write 12345 3 输出结果为 123 9 2常用I O流成员函数 常用的输入流成员函数使用get 函数读入字符数据重载形式1 输入流对象名 get 功能 从输入流中读取一个字符 包括空白符 并将该字符作为函数返回值 若遇流结束符 返回EOF 其中 空白符指的是空格符 制表符 换行符以及转义字符 流结束符是指 ctrl z 9 2常用I O流成员函数 重载形式2 输入流对象名 get c 功能 从输入流中读取一个字符 包括空白符 给字符变量c 若遇文件结束符 返回0 否则返回非0 例如 将键盘输入若干字符中的第一个 存入字符变量charc do cin get c while c 9 2常用I O流成员函数 重载形式3 输入流对象名 get s n 终止字符 功能 从输入流读取n 1个字符 并在其后加入 0 存放在由s指向的内存空间 若遇终止字符或流结束符则提前结束读操作 终止字符的缺省值为 n 返回值 调用该函数的输入流对象 9 2常用I O流成员函数 程序9 1 cpp get 方法使用示例 intmain charch s 80 while ch cin get n cout ch 从键盘输入一行字符并输出 do 从键盘输入一行字符并输出cin get ch cout ch while ch n cin get s 80 从键盘输入一行字符并输出cout s endl 9 2常用I O流成员函数 getline 读入字符串形式 输入流对象 getline 字符指针s 字符个数n 终止字符 功能 从输入流读取n 1个字符 在其后加入 0 存放在由字符指针s指向的内存空间 若遇终止字符或流结束符则提前结束读操作 终止字符的缺省值为 n 返回值 调用该函数的输入流对象 9 3文件I O流的使用 磁盘文件简介文件 存储在外部设备上的数据 用于长期保存数据 文件结构 C 把每个文件都看成是一个有序的字节序列 每个文件都以文件结束符标志文件的结束 例如 9 3文件I O流的使用 文件格式文本文件 数值和字符均按ASCII码格式存储例如 数字3 141存储时占5个字节 0011001100101110001100010011010000110001二进制文件 字符按ASCII码存储 数值按内部形式存储例如 数字3 141存储时占4个字节 01000000010010010000111111010000 9 3文件I O流的使用 文本文件可以用文本编辑器打开查看便于阅读 读写时需要进行格式转换 二进制文件用文本编辑器打开时看到的是乱码 不便于阅读 读写时不需要格式转换 效率高 9 3文件I O流的使用 文件的读写方式顺序方式 按数据在文件中的物理排列顺序依次读或写 随机方式 在文件的任何位置进行读或写 注意 在C 中 文本文件只能以顺序方式读写 二进制文件既可以顺序方式读写也可以二进制方式读写 9 3文件I O流的使用 文件流使用的类和头文件头文件 类 ifstream ofstream fstream文件的使用定义文件流对象打开文件用于读和写检查打开是否成功读或写数据使用完文件后要关闭文件 9 3文件I O流的使用 文件输出流当要将数据写入一个磁盘文件时 需要先定义一个ofstream类的对象 文件输出流对象 并与该文件关联 方法主要有两种 方法1 先定义输出流对象 再调用open成员函数打开文件 例 ofstreamfileout 建立文件输出流类对象fileout open datal txt ios out 打开文件方法2 在定义输出流类对象时打开相关联的文件 例 ofstreamoutfile datal txt ios out 9 3文件I O流的使用 文件打开成功与否的判断方法 文件流对象 is open 若打开文件成功 返回值为true 非0 否则为false 0 使用完文件后应该关闭文件 方法是 文件流对象 close 9 3文件I O流的使用 设置打开文件时的模式参数ios in打开文件进行读操作ios out打开文件进行写操作ios ate打开时文件指针定位到文件尾ios app输入的新内容添加在文件尾部进行ios trunc如果文件已存在则清空原文件ios nocreate如果文件不存在则打开失败ios noreplace如果文件存在则打开失败ios binary二进制文件 非文本文件 9 3文件I O流的使用 向文件输出流中写入数据的常见方法使用重载的流运算符 向文件写入各种数据使用输出流类成员函数put 写入一个字符 使用输出流类成员函数write 以二进制形式输出数据否则是乱码 9 3文件I O流的使用 程序9 2 cpp 使用流符号 对文件操作加上此句 include exit函数在cstdlib中定义usingnamespacestd intmain 将一个一维数组及各元素和写入文本文件test1 txt intbuf 5 1 2 3 4 5 i sum 0 ofstreamoutToFile test1 txt ios out 定义输出流对象 打开文件if outToFile 打开文件失败 流对象值为0 cout Cannotopenthefile endl exit 1 9 3文件I O流的使用 outToFile 数组的数据是 endl 将字符串写入文件for i 0 i 5 i sum buf i outToFile buf i endl 将数值写入文件 outToFile 数组各元素的和是 sum endl outToFile close 不用文件时关闭return1 9 3文件I O流的使用 程序9 3 cpp 使用put 方法向文本文件写入数据 include 文件流头文件 include exit 函数所在头文件intmain 使用put 方法将数据写入文件 charstr 80 ofstreamf1 file1 txt if f1 cout Cannotopenthefile1 endl exit 1 ofstreamf2 file2 txt if f2 cout Cannotopenthefile2 endl exit 1 9 3文件I O流的使用 cout str for inti 0 i A 9 3文件I O流的使用 文件输入流从一个磁盘文件输入数据前 需要定义一个ifstream类的对象 输入流对象 与该文件关联 方法主要有两种 方法1 先定义文件对象 然后调用open成员函数打开文件 例如 ifstreaminfile 声明文件输入流对象infile open data1 txt ios in 打开文件 使流对象与文件关联方法2 在定义文件对象时打开相关联的文件 例如 ifstreaminfile data1 txt ios in 9 3文件I O流的使用 向文件输入流中读出数据的常见方法使用流运算符 读数据 并输入到各种数据类型变量使用输入流类成员函数get 读数据 并输入到字符变量 使用输入流类成员函数getline 读数据 并输入到字符串变量或字符数组 使用输入流类成员函数read 从二进制文件读入数据 输入到各种数据类型变量 9 3文件I O流的使用 判断到达文件尾的方法方法1 利用输入流成员函数eof 判断是否文件内指针在文件尾 该方法返回bool值 如果到达文件尾 没有可读的内容 返回true 非0 否则返回false 0 方法2 利用get函数返回的字符值与文件结束符EOF比较来判断是否读文件结束 方法3 利用流符号 读数据 如果没有内容可读返回false 0 否则返回true 非0 9 3文件I O流的使用 程序9 4 cpp 使用流符号 从文件中读入数据 include include includeintmain 从文件中读入数据到字符串 再从字符串流入显示器 ifstreamfin test1 txt char strl if fin exit 1 fin strl 从文件读数据cout strl fin close 关闭文件 9 3文件I O流的使用 程序9 5 cpp 使用成员函数getline 从文件读数据 include includeintmain ifstreamfin test1 txt charline 80 while fin eof fin getline line sizeof line cout line n fin close return1 9 3文件I O流的使用 程序9 6 cpp 使用成员函数get 从文件读数据 include 将文件file1 txt中的内容拷贝到文件file2 txt中 includeintmain charch ifstreamfin file1 txt ofstreamfout file2 txt if fin cout cannotopenfile1 return1 9 3文件I O流的使用 if fout cout cannotopenfile2 return2 cout file1 txt endl while ch fin get EOF 读到文件结束符返回EOF cout put ch fout put ch cout endl fin close fout close 9 3文件I O流的使用 使用输入流类成员函数read 读取数据格式 输入流对象名 read buf n 功能 从输入流中读取n个字节 含换行符在内 或遇到输入流结束符 ctrl z 时结束操作 读入的数据存入字符指针buf所指存储区 且不在字符串尾添加空字符 0 返回值 当前输入流对象 适用范围 主要用于对二进制文件的读取 9 3文件I O流的使用 程序9 7 cpp 读写二进制文件 intmain inta 5 1 2 3 4 5 i fstreamiofile data3 dat ios in ios out ios binary if iofile exit 1 for i 0 i 5 i iofile write char 9 3文件I O流的使用 iofile seekg 0 ios beg 读指针回到文件开始for i 0 i 5 i iofile read char 9 4随机方式读 写文件 文件指针的随机定位通过文件中的读写指针完成对文件的随机访问 读指针 从读指针当前所指位置读出数据 向后移动读指针使其指向下一个数据 写指针 把数据写到写指针当前所指位置 向后移动写指针 使其指向下一个写数据的位置 利用C 流类中提供的成员函数 可改变读 写指针 从而实现对文件的随机读 写 随机访问多用于二进制文件 9 4随机方式读 写文件 操作读指针的成员函数移动读指针 seekg seekget的简写 调用格式1 输出流对象名 seekg 流中位置 调用格式2 输出流对象名 seekg 偏移量 参照位置 通常使用参照位置移动文件内读指针 取ios类中的枚举量 ios beg相对文件头 ios curr相对文件当前位置 ios end相对文件尾 返回写指针当前位置 相对于文件头的字节数 调用格式 输出流对象名 tellg 9 4随机方式读 写文件 操作写指针的成员函数移动写指针函数 seekp seekput的简写 调用格式1 输出流对象名 seekp 流中位置 调用格式2 输出流对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论