语言从入门到精通第16章c输入输出流_第1页
语言从入门到精通第16章c输入输出流_第2页
语言从入门到精通第16章c输入输出流_第3页
语言从入门到精通第16章c输入输出流_第4页
语言从入门到精通第16章c输入输出流_第5页
已阅读5页,还剩11页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++输入输出流标准输出流对象cout其它输出流对象标准输出流对象cin使用格式控制符控制输出格式用流对象的成员函数控制输出格式用流成员函数put输出字符用于字符输入的流成员函数

istrearn类的其它成员函数标准输出流对象cout

cout是consoleoutput的缩写,意为在控制台(终端显示器)的输出,它是ostream的派生类ostream_withassign的对象,它是从内存输入到标准输出设备(显示器)的数据流,称为cout流或标准输出流。cout不是C++预定义的关键字,它是ostream流类的对象,在iostream中定义。cout流是容纳数据的载体,它并不是一个运算符。C++中的标准输出是通过在cout数据流上重载运算符“<<”来实现的,其格式如下所示:cout<<表达式1<<表达式2<<…<<表达式n;格式说明:运算符“<<”又叫插入运算符,因为它将后面所跟的数据插入到它前面的数据流中。【范例16-6】将通过实例讲述cout与插入运算符“<<”的使用方法其它输出流对象

在C++的iostream头文件中,还提供了另外2中输出流对象,分别是cerr和clog,它们二者都向显示器输出出错信息。cerr流对象是标准错误流,被指定为与显示器关联。cerr与标准输出流cout的作用和用法差不多。但有一点不同,在于cout流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件,而cerr流中的信息只能在显示器输出,并且cerr流中的信息是用户根据需要指定的。clog流对象也是标准错误流,作用和cerr相同。它们之间的区别在于cerr不经过缓冲区,直接向显示器上输出信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇endl时向显示器输出。【范例16-7】将通过实例讲述cerr和clog流对象的使用方法标准输出流对象cin

C++的标准输入流cin是istream的派生类istream_withassign的对象,它是从标准输入设备(键盘)输入到内存的数据流,称为cin流或标准输入流。C++中的标准输入是通过在cin数据流上重载运算符“>>”来实现的,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据,通常跳过输入流的空格、tab键、换行符等空白字符,其格式如下所示:cin>>变量1>>变量2>>…>>变量n;例如:inta,b;cin>>a>>b; //若从键盘上输入21abc出错只有在正常状态时,才能从输入流中提取数据。当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输人流cin就处于出错状态,即无法正常提取数据。此时对cin流的所有提取操作都将终止。【范例16-8】将通过实例讲述cin流对象的使用方法使用格式控制符控制输出格式

C++的I/O系统定义了一些用来管理I/O格式的控制函数,它们不在类的封装之内,表面上也不一定以函数调用的形式出现,因此它们被称为格式控制符,格式控制符包括有参和无参的控制符,分别在两个头文件中说明。不带参数的操纵函数又叫操纵符,定义在头文件iostream.h中,带参数的操纵函数定义在头文件iomanip.h中。iostream.h中的操纵符如表16.5所示,iomanip.h中的操纵函数如表16.6所示。表16.5iostream.h中的操纵符操纵符用法举例结果说明deccout<<dec<<intvar;将整数转化为十进制格式输出cin>>dec>>intvar;将整数转化为十进制格式输入hexcout<<hex<<intvar;将整数转化为十六进制格式输出cin>>hex>>intvar;将整数转化为十六进制格式输入octcout<<oct<<intvar;将整数转化为八进制格式输出cin>>oct>>intvar;将整数转化为八进制格式输入wscin>>ws忽略输入流中的空格endlcout<<endl;插入换行符,刷新流ebdscout<<ends;插入串最后的串结束符flushcout<<flush;刷新一个输入流表16.6iomanip.h中的操纵函数操纵符用法举例结果说明setprecision(int)cout<<setprecision(6)输出精度为6位小数的浮点数cin>>setprecision(15)输入精度为15位小数的浮点数setw(int)cout<<setw(6)<<var;输出宽度为6的数据cin>>setw(24)>>buf;输入宽度为24的数据setiosflags(long)cout<<setioflags(ios::hex|ios::uppercase)指定数据输出的格式为十六进制格式且用大写字母输出cin>>setioflags(ios::oct|ios::skipws)指定数据输入的格式为八进制格式且跳过输入中的空白reseriosflags(long)cout<<reseriosflags(ios::dec)取消数据输出的十进制格式cout<<reseriosflags(ios::dec)取消数据输入的十六进制格式setfill(char)cout<<setfill(‘*’)<<endl;设置填充字符*【范例16-9】将通过实例讲述使用格式控制符控制输出格式的方法用流对象的成员函数控制输出格式

除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式。在类ios的说明中,列出了如下所示的控制输出格式的常用的成员函数。longflags(); //返回当前标志字longflags(long); //设置标志字并返回longsetf(long); //设置指定的标志位longunsetf(long); //清除指定的标志位longsetf(long,long); //设置指定的标志位的值intwidth(); //返回当前显示数据的域宽intwidth(int); //设置当前显示域宽并返回原域宽charfill(); //返回当前填充字符charfill(char); //设置填充字符并返回原填充字符intprecision(); //返回当前浮点数精度//设置浮点数精度并返回原精度(指小数点后的位数)intprecision(int);

格式标志在类ios中被定义为枚举值,因此在引用这些格式标志时要在前面加上类名ios和域运算符“::”。所涉及的标志字又称标志状态字,它是一个long类型(长整型)的变量。状态字的各位都控制一定的I/O特征,例如,标识状态字的右第一位为1,则表示在输入时跳过空白符号。状态字枚举类型形式定义于ios说明中,如下所示:Enum{skipws=0x0001, //输入时跳过空白left=0x0002, //左对齐输出right=0x0004, //右对齐输出internal=0x0008, //在符号位和基指示符后填充dec=0x0010, //十进制格式oct=0x0020, //八进制格式hex=0x0040, //十六进制格式showbase=0x0080, //输出标明基数说明showpoint=0x0100, //输出浮点数带小数点uppercase=0x0200, //十六进制大写输出showpos=0x0400, //输出正整数带+号scientific=0x0800, //输出浮点数用科学表示法fixed=0x1000, //输出浮点数以定点形式unitbuf=0x2000, //插入后刷新流缓冲区stdio=0x4000 //插入后刷新stdout和stderr};【范例16-10】将通过实例讲述用流对象的成员函数控制输出格式的方法用流成员函数put输出字符

在C++程序中,一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区。有时用户还有特殊的输出要求,例如只输出一个字符。ostream类除了提供前面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put。它的用法很简单,例如:cout.put('a');代码说明:调用该函数的结果是在屏幕上显示一个字符a。put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式),例如:cout.put(65+32);代码说明:程序也显示字符a,因为97是字符a的ASCII代码。还可以在一个语句中连续调用put函数,例如:cout.put(71).put(79).put(79).put(68).put('\n'); //屏幕上显示GOOD【范例16-11】将通过实例讲述用流成员函数put输出字符的方法用于字符输入的流成员函数

——用get函数读入一个字符

(1)不带参数的get函数不带参数的get函数的调用形式如下所示:cin.get();代码说明:它用来从指定的输人流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。若遇到输入流中的文件结束符,则函数值返回文件结束标志EOF,一般以-1代表EOF,用-1而不用0或正值,是考虑到不与字符的ASCII代码混淆,但不同的C++系统所用的EOF值有可能不同。【范例16-12】将通过实例讲述如何使用不带参数的get函数提取字符用于字符输入的流成员函数

——用get函数读入一个字符

(2)有1个参数的get函数有1个参数的get函数的调用形式如下所示:cin.get(ch);代码说明:其作用是从输人流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回非零值,如失败(遇文件结束符)则函数返回零值假。【范例16-13】将通过改写实例16.11讲述如何使用有1个参数的get函数提取字符用于字符输入的流成员函数

——用get函数读入一个字符

(3)有3个参数的get函数有3个参数的get函数的调用形式有如下两种方式:cin.get(字符数组,字符个数n,终止字符); //方法1cin.get(字符指针,字符个数n,终止字符); //方法2代码说明:其作用是从输入流中读取n-1个字符,赋给指定的字符数组(或字符指针指向的数组),如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功则函数返回非零值,如失败(遇文件结束符)则函数返回零值。【范例16-14】将通过改写实例16.11讲述如何使用有3个参数的get函数提取字符用于字符输入的流成员函数

——用getline函数读入一行字符

getline函数的作用是从输人流中读取一行字符,其用法与带3个参数的get函数类似,它的一般调用形式如下所示:cin.getline(字符数组(或字符指针),字符个数n,终止标志字符);【范例16-15】将通过实例讲述如何用getline函数读入一行字符istrearn类的其它成员函数

1.eof函数eof是endoffile的缩写,表示“文件结束”。从输人流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为零值。【范例16-16】将通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论