文档详情

C++面向对象程序设计 曹静 第08章 数据流与文件的输入输出新.ppt

发布:2015-12-16约4.7千字共25页下载文档
文本预览下载声明
C++面向对象程序设计 第8章 数据流与文件的输入/输出 8.1 I/O流的概念 8.2 数据流的控制 8.3 文件的输入/输出 项目设计7 校园信息管理系统中的数据存储 8.1 I/O流的概念 流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。 程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。 读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。 8.2 数据流的控制 8.2.1 数据流的格式控制 8.2.2 常用的输入/输出函数 8.2.3 数据流的错误侦测 8.2.1 数据流的格式控制 插入() 和提取()运算符是为所有标准C++数据类型定义的,其作用是向流中传送和读取数据。插入和提取运算符与预先定义的操作符一起工作,用来控制输入和输出格式。 1.输出宽度 为了调整输出时的显示宽度,可以通过调用width成员函数为每个项(item)指定输出宽度或在流中放入setw操纵符。 8.2.1 数据流的格式控制 2.对齐方式 输出流的默认对齐方式为文本右对齐,程序中可以用setiosflags和resetiosflags操作符重设对齐方式。 3.精度 使用setprecision操作符改变精度,该操作符有两个标志,ios::fixed和ios::scientific。 4.进制 可以用dec、oct和hex操纵符设置输入和输出的默认进制。 8.2.2 常用的输入/输出函数 常用istream成员函数包含: int istream::get() 如果输入流包括附加的数据,函数取得并返回下一个字符;否则它返回EOF。 istream istream::get(char c) 如果输入流包括附加的数据,函数取得并将下一个字符分配给c;否则就是没有定义对c的作用。返回一个对*this(调用对象)的引用。 8.2.2 常用的输入/输出函数 istream istream::get(char s[],int n,char delim=\n) 从输入流获取字符并将它们分配给s直到下面的一个条件发生:取得n-1个字符,没有输入字符了,或者下一个接收的字符的值为delim。 istream istream::getline(char s[],int n,char delim=\n) 从输入流获取字符并将它们分配给s直到下面的一个条件发生:取得n-1个字符,没有输入字符了,或者下一个接收的字符的值为delim。 8.2.2 常用的输入/输出函数 int istream::peak() 如果输入流包括附加的数据,函数返回下一个接收的字符;否则它返回EOF。 istream istream::unget(char c) 字符c被送到输入流。它将是下一个要接收的字符。函数返回一个对*this的引用。 库iostream还提供对ios成员函数的访问,一些程序在输入流中检测文件尾。 bool ios::eof() 如果流中达到文件尾则返回真;否则函数返回假。 8.2.2 常用的输入/输出函数 库iostream还提供两个类似get()和getline()的ostream成员函数。 ostream ostream::put(char c) 将字符c插入输入流中。函数返回一个对*this的引用。 ostream ostream::write(const char s[],int n) 将s中的n个字符插入到输入流中。空字符也是有效的。函数返回一个对*this的引用。 库iostream还提供常用的ostream成员函数。 ostream ostream::flush() 强制任何没有完成的操作符插入完成。函数返回一个对*this的引用。 8.2.3 数据流的错误侦测 流cerr和clog把显示输出到默认错误日志上,该日志通常是控制台显示器。 对流cerr的每个插入请求应该立即送出显示。下面给出几个错误消息的例子: cerr系统将在10秒后重起!\n; cerr输入值无效,请重新输入!\n; 8.2.3 数据流的错误侦测 如果出于效率的缘故,则有必要缓冲错误和系统状态消息,这样就应该使用带缓冲的错误流clog。像cerr一样,clog通常是定向到显示器。下面给出几个样例: clogUserName成功登陆!\n; clog有新邮件!\n; 8.3 文件的输入/输出 8.3.1 fstream类 8.3.2 格式化文字模式的文件I/O 8.3.3 二进制模式的文件I/O 8.
显示全部
相似文档