《程序设计》csu20119 第14章输入输出与文件 冷输入输出是指程序与外部设备交换信息 令C++把输入输出看成是一个数据流 输入流:外围设备流向内存的数据 令输出流:内存流向外围设备的数据 冷在C++中,输入输出不是语言所定义的部分, 而是由标准库提供。 冷C++的输入输出分为 >基于控制台的ⅣO >基于文件的ⅣO >基于字符串的/O 程序设计-1
《程序设计》 cs.sjtu 2011.9 程序设计 - 1 第14章 输入输出与文件 ❖ 输入输出是指程序与外部设备交换信息 ❖ C++把输入输出看成是一个数据流 ❖ 输入流:外围设备流向内存的数据 ❖ 输出流:内存流向外围设备的数据 ❖ 在C++中,输入输出不是语言所定义的部分, 而是由标准库提供。 ❖ C++的输入输出分为: ➢ 基于控制台的I/O ➢ 基于文件的I/O ➢ 基于字符串的I/O
《程序设计》 cs.stu20119 输入输出与文件 冷流与标准库 冷输入输出缓冲 令基于控制台的O 基于文件的JO 基于字符串的I/O 程序设计-2
《程序设计》 cs.sjtu 2011.9 程序设计 - 2 输入输出与文件 ❖ 流与标准库 ❖ 输入输出缓冲 ❖ 基于控制台的I/O ❖ 基于文件的I/O ❖ 基于字符串的I/O
《程序设计》 cs.stu20119 流的概念及用途 冷ⅣO操作是以对数据类型敏感的方式执行的。C+的/O操 作是以字节流的形式实现的。流实际上就是字节序列。 冷C+提供了低级和高级ⅣO功能。低级O功能通常只在设 备和内存之间传输一些字节。高级ⅣO功能把若干个字节组 合成有意义的单位,如整数、浮点数、字符、字符串以及 用户自定义类型的数据。 令C+提供了无格式ⅣO和格式化ⅣO两种操作。无格式ⅣO传 输速度快,但使用起来较为麻烦。格式化ⅣO按不同的类型 对数据进行处理,但需要增加额外的处理时间,不适于处 理大容量的数据传输
《程序设计》 cs.sjtu 2011.9 程序设计 - 3 流的概念及用途 ❖ I/O操作是以对数据类型敏感的方式执行的。C++的I/O操 作是以字节流的形式实现的。流实际上就是字节序列。 ❖ C++提供了低级和高级I/O功能。低级I/O功能通常只在设 备和内存之间传输一些字节。高级I/O功能把若干个字节组 合成有意义的单位,如整数、浮点数、字符、字符串以及 用户自定义类型的数据。 ❖ C++提供了无格式I/O和格式化I/O两种操作。无格式I/O传 输速度快,但使用起来较为麻烦。格式化I/O按不同的类型 对数据进行处理,但需要增加额外的处理时间,不适于处 理大容量的数据传输
《程序设计》 cs.stu20119 流与标准库 头文件类型 iostream istream从流中读取 ostream写到流中去 iostream对流进行读写,从 istream和 ostream派生 fstream ifstream从文件中读取,由 istream派生而来 ofstream写到文件中去,由 ostream派生而来 fstream对流进行读写,由 iostream派生而来 sstream istringstream从 string对象中读取,由iram派生而来 ostringstream写到ting对象中去,由 ostream派生而来 stringstream对 string对象进行读写,由 ostream派生而来 程序设计-4
《程序设计》 cs.sjtu 2011.9 程序设计 - 4 流与标准库 头文件 类型 iostream istream从流中读取 ostream写到流中去 iostream对流进行读写,从istream和ostream派生 fstream ifstream从文件中读取,由istream派生而来 ofstream写到文件中去,由ostream派生而来 fstream对流进行读写,由iostream派生而来 sstream istringstream从string对象中读取,由istream派生而来 ostringstream写到string对象中去,由ostream派生而来 stringstream对string对象进行读写,由iostream派生而来
《程序设计》 cs.stu20119 类的继承关系 lOS istream ostream istringstream ifstream iostream ofstream ostringstream fstream stringstream 程序设计
《程序设计》 cs.sjtu 2011.9 程序设计 - 5 类的继承关系 ios istream ostream ifstream iostream ofstream fstream istringstream ostringstream stringstream
《程序设计》 cs.stu20119 输入输出与文件 冷流与标准库 冷输入输出缓冲 令基于控制台的O 基于文件的JO 基于字符串的I/O 程序设计-6
《程序设计》 cs.sjtu 2011.9 程序设计 - 6 输入输出与文件 ❖ 流与标准库 ❖ 输入输出缓冲 ❖ 基于控制台的I/O ❖ 基于文件的I/O ❖ 基于字符串的I/O
《程序设计》 cs.stu20119 输入输出缓冲 冷C+的输入输出是基于缓冲实现的 每个O对象管理一个缓冲区,用于存储程序读写的数据 冷当用户在键盘上输入数据时,键盘输入的数据是存储在输 入缓冲区中,当执行“>>”操作时,从输入缓冲区中取数据 存入变量,如缓冲区中无数据,则等待从外围设备取数据 放入缓冲区 <”是将数据放入输出缓冲区。如有下列语句 0s<<“ please enter the value:”; 系统将字符串常量存储在与流o关联的缓冲区中 程序设计-7
《程序设计》 cs.sjtu 2011.9 程序设计 - 7 输入输出缓冲 ❖ C++的输入输出是基于缓冲实现的 ❖ 每个I/O对象管理一个缓冲区,用于存储程序读写的数据 ❖ 当用户在键盘上输入数据时,键盘输入的数据是存储在输 入缓冲区中,当执行“>>”操作时,从输入缓冲区中取数据 存入变量,如缓冲区中无数据,则等待从外围设备取数据 放入缓冲区 ❖ “<<”是将数据放入输出缓冲区。如有下列语句: os << “please enter the value:”; 系统将字符串常量存储在与流os关联的缓冲区中
《程序设计》cs.sj2011.9 输出缓冲区的刷新 冷程序正常结束。作为main函数返回工作的一部分,将真正 输出缓冲区的内容,清空所有的输出缓冲区 当缓冲区已满时,在写入下一个值之前,会刷新缓冲区 冷用标准库的操纵符,如行结束符endl,显式地刷新缓冲区 冷在每次输出操作执行结束后,用 unitbuf操纵符设置流的内 部状态,从而清空缓冲区; 冷可将输出流与输入流关联起来。在这种情况下,在读输入流 时,将刷新其关联的输出缓冲区。在标准库中,将cout和cin 关联在一起,因出每个输入操作都将刷新cout关联的缓冲区 程序设计-8
《程序设计》 cs.sjtu 2011.9 程序设计 - 8 输出缓冲区的刷新 ❖ 程序正常结束。作为main函数返回工作的一部分,将真正 输出缓冲区的内容,清空所有的输出缓冲区; ❖ 当缓冲区已满时,在写入下一个值之前,会刷新缓冲区; ❖ 用标准库的操纵符,如行结束符endl,显式地刷新缓冲区; ❖ 在每次输出操作执行结束后,用unitbuf操纵符设置流的内 部状态,从而清空缓冲区; ❖ 可将输出流与输入流关联起来。在这种情况下,在读输入流 时,将刷新其关联的输出缓冲区。在标准库中,将cout和cin 关联在一起,因此每个输入操作都将刷新cout关联的缓冲区
《程序设计》 cs.stu20119 输入输出与文件 冷流与标准库 冷输入输出缓冲 令基于控制台的O 基于文件的JO 基于字符串的I/O 程序设计-
《程序设计》 cs.sjtu 2011.9 程序设计 - 9 输入输出与文件 ❖ 流与标准库 ❖ 输入输出缓冲 ❖ 基于控制台的I/O ❖ 基于文件的I/O ❖ 基于字符串的I/O
《程序设计》 cs.stu20119 基于控制台的MO 标准的输入输出流对象 cin是类 istream的对象,它与标准输入设备(通常指 键盘连在一起。 >cout是类 ostream的对象,它与标准输出设备(通常指 显示设备连在一起。 cerr是类 steam的对象,它与标准错误输出设备连 在一起。 clog是类 ostream的对象,它与标准错误输出设备连 在一起。 程序设计-10
《程序设计》 cs.sjtu 2011.9 程序设计 - 10 基于控制台的I/O ❖ 标准的输入输出流对象 ➢ cin是类istream的对象,它与标准输入设备(通常指 键盘)连在一起。 ➢ cout是类ostream的对象,它与标准输出设备(通常指 显示设备)连在一起。 ➢ cerr是类osteam的对象,它与标准错误输出设备连 在一起。 ➢ clog是类ostream的对象,它与标准错误输出设备连 在一起