【2018年整理】C++程序设计第10章 输入输出

上传人:ji****72 文档编号:48632802 上传时间:2018-07-18 格式:PPT 页数:35 大小:125KB
返回 下载 相关 举报
【2018年整理】C++程序设计第10章 输入输出_第1页
第1页 / 共35页
【2018年整理】C++程序设计第10章 输入输出_第2页
第2页 / 共35页
【2018年整理】C++程序设计第10章 输入输出_第3页
第3页 / 共35页
【2018年整理】C++程序设计第10章 输入输出_第4页
第4页 / 共35页
【2018年整理】C++程序设计第10章 输入输出_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《【2018年整理】C++程序设计第10章 输入输出》由会员分享,可在线阅读,更多相关《【2018年整理】C++程序设计第10章 输入输出(35页珍藏版)》请在金锄头文库上搜索。

1、第十章 输入/输出本章内容n输入/输出(I/O)概述n控制台I/On文件I/On字符串I/O输入/输出(I/O)概述n输入/输出(简称I/O)是程序的一个重要 组成部分: 程序运行所需要的数据往往要从外设(如: 键盘、文件等)得到 程序的运行结果通常也要输出到外设(如: 显示器、打印机、文件等)中去。 n在C+中,输入/输出不是语言定义的成分 ,而是由具体的实现(编译程序)作为标准 库的功能来提供。 C+的I/O流n在C+中,输入/输出操作是一种基于字节流的操作:在进行输入操作时,可把输入的数据看成逐个字节地从 外设流入到计算机内部(内存); 在进行输出操作时,则把输出的数据看成逐个字节地从

2、内存流出到外设。n在C+的标准库中,除了提供基于字节的输入/输出 操作外,为了方便使用,还提供了基于C+基本数据 类型数据的输入/输出操作。n在C+程序中也可以对类库中输入/输出类的一些操 作进行重载,使其能对自定义类的对象进行输入/输出 操作。 I/O的分类n基于控制台的I/O:从标准输入设备(如:键盘)获得数据 把程序结果从标准输出设备(如:显示器)输出n基于文件的I/O:从外存文件获得数据 把程序结果保存到外存文件中n基于字符串变量的I/O:从程序中的字符串变量中获得数据 把程序结果保存到字符串变量中C+输入输出的实现途径n过程式通过从C语言保留下来的函数库 中的输入/输出函数来实现。n

3、面向对象通过C+的I/O类库中的I/O类 来实现。面向对象的输入/输出nC+的I/O类库提供了以面向对象方式进行输入/ 输出。以下是I/O类库中基本的I/O类:ios istream(控制台输入) ostream(控制台输出) ifstream(文件输入) istrstream(字符串变量输入) ofstream(文件输出) ostrstream(字符串变量输出) iostream(输入/输出) fstream(文件输入/输出) strstream(字符串变量输入/输出) n在进行输入/输出时,首先创建一个I/O类的对象, 然后,通过该对象(调用对象类的成员函数)进行输 入/输出操作。nist

4、ream类重载了操作符“”(抽取),用它可以 进行基本类型数据的输入操作。例如: istream in(.); in x; /x是一个变量 in y; /y是一个变量 或 in x y;nostream类重载了操作符“控制台输出#include using namespace std;int x; float f; char ch; int *p=cout #include /操纵符声明的头文件。 using namespace std; . int x=10; cout using namespace std;int x; double y; char str10; cin x; cin y

5、; cin str; 或者cin x y str;n在输入时,各个数据之间用空白符分开。 n可以通过一些操纵符来控制输入的行为,例如: cin setw(10) str; /把输入的前9个字符和 一个0放入str中。n除了抽取操作符“”外,还可以使用istream类的 基于字节流的成员函数来进行输入,例如: /输入一个字符。 istream:get(char /输入一个字符串直到输入了count-1个字符或遇到 /delim指定的字符为止,并自动加上一个0字符。 istream:getline(char *p, int count, char delim=n); /读入count个字符至p所指

6、向的内存空间中。 istream:read(char *p,int count);输入/输出操作符“”和“”和插入操作符 “”。 n对自定义的类重载插入操作符“”时,须作为全局函数来重载。插入操作符“ #include n 对于文件输出: 创建一个ofstream类(是ostream类的派生 类)的对象。 建立ofstream类的对象与外部文件之间的联 系。建立ofstream类的对象与外部文件联系的方式n直接方式:在创建ofstream类的对象时指出 外部文件名和打开方式。例如:ofstream out_file(,);n间接方式是在创建了ofstream类的对象之后 ,调用ofstream

7、的一个成员函数open来指出与 外部文件的联系。例如: ofstream out_file;out_file.open(,); 文件输出打开方式n打开方式: ios:out,含义是打开一个外部文件用于写操作,如 果外部文件已存在,则首先把它的内容清除;否则,先创 建该外部文件。 ios:app,含义是打开一个外部文件用于添加(从文 件末尾)操作。如果外部文件不存在,则先创建该外部文 件。 上面的值与ios:binary按位或(|)操作的结果 ,它表示按二进制方式打开文件。默认的打开方 式是文本方式。 对以文本方式打开的文件,当输出的字符为 n时,在某些平台上(如:DOS和Windows平 台)

8、将自动转换成r和n两个字符写入外部文 件。 n打开文件时,必须要对文件打开操作 的成功与否进行判断。判断文件是否成 功打开可以采用以下方式 if (!out_file) /或:out_file.fail() /或: !out_file.is_open() /失败处理 n文件成功打开后,可以使用插入操作符“,); 或ifstream in_file; in_file.open(,); n打开方式: ios:in,它的含义与fopen的打开方式“r”相同 也可以把它与ios:binary通过按位或(|)操作实现二 进制打开方式。默认为文本方式。 对以文本方式打开的文件,当文件中的字符为连续的 r和

9、n时,在某些平台上(如:DOS和Windows平台 )将自动转换成一个字符n输入。n判断打开成功的方式与输出文件对象相同。n文件成功打开后,可以使用抽取操作符“”或 ifstream类的一些成员函数来进行文件输出操作, 例如: ifstream in_file(“d:myfile.dat“,ios:in); if (!in_file) exit(-1); char ch,buf11; int x; double y;in_file x ch y; in_file.get(ch); in_file.read(buf,7); buf7 = 0;n判断文件是否结束可以调用ios类的成员函 数eof来

10、实现: int ios:eof(); 该函数返回0表示文件未结束;返回非0表 示文件结束。 n文件输出操作结束时,要使用ifstream的 一个成员函数close关闭文件: in_file.close(); n注意:从文件输入必须要知道文件中数据 的存储格式!文件输入/输出 n如果需要打开一个既能读入数据、也能输 出数据的文件,则需要创建一个fstream类的 对象(类fstream是类iostream的派生类)。 n在创建fstream类的对象并建立与外部文件 的联系时,文件打开方式应为:ios:in|ios:out (可在文件任意位置写)或ios:in|ios:app( 只能在文件末尾写)

11、 随机存取文件n为了能够随机读写文件中的数据,必须要显示地指出读写的位 置。n对于以输入方式打开的文件,可用下面的操作来指定文件内部 指针位置: istream /指定相 对位置 streampos istream:tellg(); /获得指针位置n对于输出文件,可用下面的操作来指定文件内部指针位置: ostream /指定 相对位置 streampos ostream:tellp(); /获得指针位置 n可以是:ios:beg(文件头),ios:cur(当前 位置)和ios:end(文件尾)。字符串I/On程序中的有些数据并不直接输出到标准输 出设备或文件,而是需要保存在程序中的某 个字符串变量中。 n 首先需要创建类istrstream、ostrstream或 strstream的一个对象 对于ostrstream类 :char buf100;ostrstream str_buf;或 ostrstream str_buf(buf,100); 对于istrstream类 char buf100;/通过某种途径在buf中存放了一些字 符。istrstream str_buf(buf);或 istrstream str_buf(buf,100); n 然后可以用与控制台和文件输入/输出类似的操作进 行基于字符串变量的输入/输出。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号