第14章+输入输出和文件.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14.5.3 输入流与域宽 iostream类中定义的成员函数,如width()、fill()、precsion,以及iomanip中定义的一些有参控制符,如setfill()、setw()、setprecision等,都适用于输入流,但实际只有少数几个真正能影响输入流对象,本节讨论一个使用最多的用法:字符数组与域宽 在对char型数组进行输入时,一个重要的问题是保证输入字符串的长度小于数组的大小,这在第3章中已经讨论过,流类库提供了width()函数和setw控制符,用于限定输入的字符个数: cin.width(n):设置读入最多n-1个字符。最后一个要放’\0’。 setw(n):与cin.width(n)等价。 来看一段示例: 14.5.4 使用get函数读取单个字符 第3章中曾讨论过使用get函数和getline函数读取一行字符的操作,这些函数称为非格式化函数,这些函数读取字符输入(包括空格),不进行数据转换。本节讨论如何使用iostream类的get成员函数读取单个字符。 (1)istream istream::get(char); 此函数调用将待赋值char型变量作为其参数,返回的istream类的引用,所以可以将其拼接起来,即下列用法是合法的: char c1,c2,c3; cin.get(c1).get(c2).get(c3); (2)int istream::get(void) 该函数调用读入一个字符(包括空白字符),并返回该字符的整型值,和上面有参get版本不同,因返回值并非istream类的对象,因此,无法将多个无参get函数拼接起来,基本的用法为: char c1=cin.get(); 14.5.5 使用get和getline函数读取C风格字符串 istream类中重载了get函数和getline函数来一次性读取多个字符到C风格字符串中,大致有以下重载版本: (1)istream istream::get(char *buffer, int size,char delim=‘\n’ ) (2)istream istream::getline(char *buffer, int size,char delim=‘\n’) 14.5.6 其他istream方法 除了get函数和getline函数,istream类中还定义了包括ignore()、read()、peek()、gcount()和putback()等成员函数,本节简要对它们的用法作一下介绍: (1)ignore函数 其基本调用形式为 istream istream::ignore(int n=1,int delim=EOF); (2)read函数 其基本调用形式为: istream istream::read(char* buf,int n); (3)peek函数 其基本调用格式为: int istream::peek(); (4)gcount函数 其基本调用格式为: int istream::gcount() (5)putback函数 其基本调用格式为: istream istream::putback(char); 14.6 流状态 每个流(istream或osream)都有一个与之相关的状态字,出错和非标准条件都通过适当地设置和检测这个状态字来处理。 14.6.1 什么是流状态 ios_base类中定义了如下枚举结构,用以表示流的状态。 enum Iostate { goodbit = 0x0, //没有位设置,操作正常 eofbit = 0x1, //到达文件末尾 failbit = 0x2, //I/O操作失败,如未能取得预期字符, badbit = 0x4, //非法操作 _Statmask = 0x7 }; 不难看出,eofbit、failbit和badbit状态常量实际上分别对应着状态字的第1,2,3位,当输入输出流出现各种问题时,会自动置eofbit、failbit和badbit中的一个或多个有效,也就是将其在状态字中的对应位置1。 只有当3位都为0,即状态字等于goodbit时,才说明一切正常,程序可以使用ios_base提供的共用成员函数检查和设置流的状态,决定要进行的操作。 14.6.2 读取流状态 ios_base类提供了如下函数读取当前的流状态,如所示: 14.6.3 管理流状态 对流状态得管理可分为状态字的设置和缓冲区管理两部分,分别来看一下: (1)设置状态字 ios_base类中提供了clear函数和setstate函数用来设置状态。 clear函数的原型为: void ios_base::clear( int nState = 0 ); 如果参数为0,该函数将清除所

文档评论(0)

xiaohuer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档