欢迎来到天天文库
浏览记录
ID:58891011
大小:355.50 KB
页数:59页
时间:2020-09-30
《C++课件第10章:流类库和输入输出.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章流类库和输入输出东南大学生物科学与医学工程学院夏小俊本章要点10.1C++的基本流类体系basic_iosbasic_streambufbasic_istreambasic_ostreambasic_ifstreambasic_iostreambasic_ofstreambasic_fstream指针C++的基本流类体系说明(*)basic_streambuf不是basic_ios的派生类,而是一个独立的类,只是basic_ios有一个保护访问限制的指针指向它,其作用是管理一个流的缓冲区。basic_ios类模板提供了对流进行格式化输入输出和错误处理的成员函数。b
2、asic_istream类模板提供完成提取(输入)操作的成员函数,basic_ostream类模板提供完成插入(输出)操作的成员函数。basic_iostream类是前两者的聚合,并没有增加成员。*从技术上讲,模板并不能派生。但是这些模板只是预先定义了数据类型(如char或wchar_t等等)的模板实例,所以可以继承。标准输入/输出流对象在C++的流类库中定义了四个全局流对象:cin,cout,cerr和clog。cin标准输入流对象,键盘为其对应的标准设备。cout、cerr和clog都是标准输出流对象,显示器为标准输出设备。标准输出流对象的区别对象名是否使用缓冲区是否
3、可以重定向cout是是clog是否cerr否否注:这里的区别与头文件、编译环境和运行环境都有较大影响,具体细节非常复杂。cerr对象的不缓冲特性(*)#include//传统头文件intmain(){inti=0,j;cerr<<“SEU”;//更换cout和clog对比j=5/i;return0;}cout的重定向(*)#includeusingnamespacestd;intmain(){cout<<"SEU";cerr<<"NJU";clog<<"PKU";return0;}//命令行方式下运行**.exe>>
4、**.txt提取运算符和插入运算符提取运算符“>>”(stream_extractionoperator)和插入运算符“<<”(stream_insertionoperator),执行输入/输出操作。“提取”的含义是指输入操作,可看作从流中提取一个字符序列。“插入”的含义是指输出操作,可看作向流中插入一个字符序列。重载插入和提取运算符插入和提取运算符只能重载为类的友元函数提取运算符重载格式:friendistream&operator>>(istream&,className&);插入运算符重载格式:friendostream&operator<<(ostream&,cl
5、assName&);流对象作为返回值和参数必须是引用!!!插入运算符重载:mystring类重载插入运算符“<<”声明为mystring的友元:friendostream&operator<<(ostream&,constmystring&);定义为:ostream&operator<<(ostream&s,constmystring&cstr){returns<void::print(){inti;for(i=0;i<=last
6、;i++){cout<>(istream&s,Complex&a){//格式为d,(d),(d,d)doublere=0,im=0;charc=0;s>>c;if(c=='('){//是否由括号开始s>>re>>c;/
7、/实部if(c==',')s>>im>>c;//虚部if(c!=')')s.clear(ios::failbit);}//漏了括号给一个操作失败标志else{s.putback(c);//无括号,返回一个字符到输入缓冲区s>>re;}//实数if(s)a=Complex(re,im);returns;}提取运算符重载:复数类分析课本上的这个例子,觉得有什么优点和不足?优点:考虑了多种的实际情况,有一定的健壮性缺点:在输入之前没有提示,程序不够友好在实验当中给出自己的修改意见提高标准输入/输出的稳健性cin为缓冲流。如果输入错了
此文档下载收益归作者所有