- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ios 中还说明了几个成员函数intios rdstate(); 读取
为配合这些错误状态的使用,ios 中还说明了几个成员函数: int ios :: rdstate(); // 读取当前错误状态 int ios :: good(); // state = 0 为真 int ios :: eof(); // state 中 eofbit 置位时为真 int ios :: fail(); // state 中 failbit,badbit,hardfail // 任一个置位时为真 int ios :: bad(); // state 中 badbit,hardfail 任一个 // 置位时为真 int ios :: clear(int = 0); // 清除指定错误位 例: cin i; if(ios :: good()) // 使用变量 i 的值 else ios :: clear(); #include iostream.h void main() { int i, s; char str[81]; cin i; s = cin.rdstate(); while(s) { cin.clear(); cin str; cout 输入错误,重新输入:; cin i; s = cin.rdstate(); } cout i endl; } 利用 ios 中重载的运算符 !,可以将上述程序写的更简单: int ios :: operator ! () { return fail(); } void main() { int i; char str[81]; while(!(cin i)) { cin.clear(); cin str; cout 输入错误,重新输入:; } cout i endl; } 13.3 输入和输出 ios 的派生类 istream 提供了创建输入流以及从流中提取数据的手段; ios 的派生类 ostream 提供了创建输出流以及向流中插入数据的手段; ios 的派生类 iostream 则同时提供了上述两种手段。由于 iostream 的主要作用是用来派生其它类的,在格式化 I/O 中通常不涉及该类。 对于格式化 I/O,类 istream 和 ostream 通过对运算符 “”和 “” 的多次重载,提供了对 3 大类 13 种数据类型的 I/O操作。 字符型:signed char, unsigned char 字符串型:signed char*, unsigned char* 数值型:short, unsigned short, int, unsigned, long, unsign-ed long, float, double, long double 13.3.1 格式化输入 格式化输入是指通过 istream 的对象,利用重载了的 “” 运算符来实现的。 最常用的格式化输入是对标准流 cin 的提取操作。在应用程序中也可以定义用户自己的输入流类。但由于定义用户流时将涉及到对流缓冲区 streambuf 的操作,且实用价值不大,因此本课程对此不作介绍。 格式化输入的缺省格式为:十进制(ios :: dec)、跳过前导空白字符(ios :: ws) 13.3.2 输入操作函数 int istream :: get(); istream istream :: get(signed char); istream istream :: get(unsigned char); istream istream :: get(signed char*, int, char = \n); istream istream :: get(unsigned char*, int, char = \n); 后 4 个成员函数所以返回对流 istream 的引用,是为了便于进行 “串联” 输入。这实际上是流类成员函数重载的 “标准” 形式。第一个函数的值为一整型数据,其目的是为了能够读取文件结束标志 EOF。该标志是 C++ 语言预定义的一个宏: #define EOF -1 #include iostream.h void main() { char ch, str[81]; cin.get(str, 81); cout str endl; while(cin.get() != \n); // 重要! cin ch; cout ch endl; } 为了方便字符串的输入,istream 中还
文档评论(0)