42、在C++的输入/输出操作中,“流”的概念如何理解?从流的角度说明什么是提取操作?什么是插入操作?答:所谓流,是指数据从一个对象流向另一个对象,是从源到目的地的数据的抽象引用,它是描述数据流的一种方式。从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作。43、标准流cin、cout、cerr和clog的作用是什么?cerr和clog这两个流有何异同?答:cin:读入标准输入的istream对象。cout:写到标准输出的ostream对象。cerr:输出标准错误的ostream对象。cerr常用于程序错误信息。clog:带缓冲的标准出错信息输出,有缓冲,当缓冲区满时被输出,默认设备为打印机,是ostream类的对象。异同:cerr和clog都是c++简单的输出流对象。cerr流对象是标准错误流,指定为和显示器关联,cerr流中的信息只能在显示器输出.clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出.44、分析下列程序的结果。#includeiostream.h#includeiomanip.hvoidmain(){coutserfill(‘#’)intk=123;coutsetw(5)’(‘k’)’endl;}运行结果:####(123)45、采用什么方法打开和关闭磁盘文件?答:打开文件的两种方法:1)使用fstream类对象打开文件fstream对象名;对象名.open(“文件名”,(方式));2)使用ofstream类或ifstream类对象打开文件ofstream对象名(“文件名”);ifstream对象名(“文件名”);关闭一个被打开的文件时,使用被打开文件的流对象调用关闭成员函数close()。46、写磁盘文件时有哪几种方法?答:put(charch)向文件写入一个字符write(constchar*pch,intcount)向文件写入count个字符,常用于二进制文件47、读磁盘文件时有哪几种方法?答:get(char)从文件读取一个字符read(char*pch,intcount)从文件读取count个字符,常用于二进制文件getline(char*pch,intcount,chardelim=’\n’)从文件读取count个字符,delim为读取时的结束符48、如何确定文件指针的位置?如何改变文件指针的位置?答:确定文件指针的方式fstreamfile;longpos=file.tellp();改变文件指针的方式:file.seekp(pos)。49、设计一个程序,实现整数、字符串、输入和输出,当输入的数据不正确时,要进行流的错误处理,要求重新输入数据,直到输入正确为止。#includeiostream#includecstring#includevectorusingnamespacestd;intmain(){intvalue;stringstr;vectorintivec;vectorstringsvec;while(cinvaluestr&&!cin.eof()){if(cin.bad()){coutdataerror,tryagain!\n;continue;}ivec.push_back(value);svec.push_back(str);}}50、重载提取()和插入()运算符,使其可以实现“点”对象的输入和输出,并利用重载后的运算符,从键盘读入点坐标,写到磁盘文件point.txt中。#includeiostream#includefstreamusingnamespacestd;classCPoint{public:CPoint(inti=0,intj=0):x(i),y(j){}friendostream&operator(ostream&out,constCPoint&a);friendistream&operator(istream&in,CPoint&a);private:intx;inty;};ostream&operator(ostream&out,constCPoint&a){outa.xa.y;returnout;}istream&operator(istream&in,CPoint&a){ina.xa.y;returnin;}intmain(){CPointa;ofstreamof(point.txt);cina;ofa;return0;}51、建立一个二进制文件,用于存放自然数1~20及其平方根,然后输入1~20之内的任意一个自然数,查找出其平方根显示在屏幕上。(求平方根时可使用math.h中的库函数sprt())#includeiostream#includefstream#includecmathusingnamespacestd;classflei{private:intx;doubley;public:friendostream&operator(ostream&os,flei&ff);friendistream&operator(istream&is,flei&ff);voidget(intq);voiddisplay();};ostream&operator(ostream&os,flei&ff){os.write((char*)&ff.x,4);os.write((char*)&ff.y,8);returnos;}istream&operator(istream&is,flei&ff){is.read((char*)&ff.x,4);is.read((char*)&ff.y,8);returnis;}voidflei::get(intq){x=q;y=sqrt(double(q));}voidflei::display(){coutxy;}intmain(){inta;fstreamf1;f1.open(dat.txt,ios::binary|ios::in|ios::out);if(!f1){couterrorendl;exit(0);}fleis;for(inti=1;i21;i++){s.get(i);f1s;}cout请输入1-20内的数endl;cina;f1.seekg(sizeof(flei)*a);f1s;s.display();f1.close();return0;}52、设计两个类,一个是学生类CStudent,另一个是用于操作文件的CStuFile类。其中CStudent应包含数据成员:姓名、学号、3门课的成绩以及总平均分等,并有相关成员函数,如用于数据校验的Validate()、输出Print()等。CStufile类包含实现学生数据的添加AddTo()、输出List()、按平均分从高到低排序的Sort()、按学号查找数据Seek()以及删除某个学号的数据Delete()等。编写一个完整的程序。