2.6输入输出流简介 2.6.1无格式输入/输出(默认的格式输入输出) 输入和输出并不是C++语言的组成部分,而是 iostream库支持来实现的 在 iostream库中,输入输出是按流的形式进行操作的。输入和输出操作分别由 Istream(输 入流)和 ostream(输出流)两个类提供,而 Iostream则是这两个类的派生类。它允许进行双向 的LO操作。 Istream的输入操作可以认为是一个数据抽取的过程,通过右移操作符”>>”从输 入流抽取数据:而 ostream的输出操作则可以认为是一个数据插入过程,通过左移操作符”>variblel>>varible>>..>>varible 2.6.2指定格式输入输出 有的时候需要按特定的格式进行输入输出,这时需要了解输入输出流的格式状态符。 每个 Iostream对象都对应一组描述其处理数据格式状态的状态变量。用户可以通过成员 函数et0和unst)来设置或取消某个状态标志。同时,系统还提供给用户一套用于修改某 个对象状态的操作符。 在隐含的情况下,对整数的读写是按十进制的方式进行的,若应用需要时,用户可以 oct、hex、dec将整数指定为按八进制、十六进制或恢复为十进制进行读写, 例如:cout<< octal:<<”tt”<oct<<6<<n 在隐含的情况下,每个浮点数具有6位数字精度,要想改变这一设置,可以通过成员函 数 precision(int)来实现,而 precision)则返回当前的精度。 例如 cout. precision( 12) cout<< precision: <<cout precision(<<endle cout<<f<<endle 如果要按更复杂的格式进行数据输入输出,则需要成员set()对输入输出的格式状态标 志进行设置。该函数具有重载实例,如下所示: 格式1:setf(long) 格式2:set( long long)
2.6 输入输出流简介 2.6.1 无格式输入/输出(默认的格式输入输出) 输入和输出并不是 C++语言的组成部分,而是 iostream 库支持来实现的。 在 iostream 库中,输入输出是按流的形式进行操作的。输入和输出操作分别由 istream(输 入流)和 ostream(输出流)两个类提供,而 iostream 则是这两个类的派生类。它允许进行双向 的 I/O 操作。istream 的输入操作可以认为是一个数据抽取的过程,通过右移操作符”>>”从输 入流抽取数据;而 ostream 的输出操作则可以认为是一个数据插入过程,通过左移操作符”>varible1>>varible2>>. . .>>variblen; 2.6.2 指定格式输入输出 有的时候需要按特定的格式进行输入输出,这时需要了解输入输出流的格式状态符。 每个 iostream 对象都对应一组描述其处理数据格式状态的状态变量。用户可以通过成员 函数 setf()和 unsetf()来设置或取消某个状态标志。同时,系统还提供给用户一套用于修改某 个对象状态的操作符。 在隐含的情况下,对整数的读写是按十进制的方式进行的,若应用需要时,用户可以 oct、hex、dec 将整数指定为按八进制、十六进制或恢复为十进制进行读写。 例如: cout<<”octal:”<<”\t\t”<<oct<<6<<\’\n’; 在隐含的情况下,每个浮点数具有 6 位数字精度,要想改变这一设置,可以通过成员函 数 precision(int)来实现,而 precision()则返回当前的精度。 例如: cout.precision(12); cout<<”precision:”<<cout.precision()<<endle; cout<<f<<endle; 如果要按更复杂的格式进行数据输入输出,则需要成员 setf()对输入输出的格式状态标 志进行设置。该函数具有重载实例,如下所示: 格式 1:setf(long); 格式 2:setf(long,long);
格式1中的参数可以是一个二进制标志位或一个标志域。表2.8列出了常用的标志位 及其含义 表2.8输入输出格式状态标志符的标志位及其含义 标志 含义 显示数值的进制 oS.showpoint 显示小数点 设定为十进制基准 los hex 设定为十六进制基准 设定为八进制基准 ios fixed 以小数形式显示浮点数 以科学记数法形式显示浮点数 在格式2中,第一个参数是一个设定值,而第二个参数参数是设定该值的标志域。表2.9 列出了这两个参数可取的值 表2.9输入输出格式状态标志符的标志位的作用参数 标志位 「标志取值 ios basefield 整数的进制 ios. floatfield 浮点数的精度及格式 ios. fixed set(long,long)首先将标志域清零,然后根据第一个参数对联标志域进行设置,它返回 该标志域重新设置之前的值,其类型也是long。利用其返回值,可以保存该值,以备以后恢 复该状态 例2.13]按不同格式进行数据输出(EX2_13cpp*)
格式 1 中的参数可以是一个二进制标志位或一个标志域。表 2.8 列出了常用的标志位 及其含义。 表 2.8 输入输出格式状态标志符的标志位及其含义 标志 含义 ios::showbase 显示数值的进制 ios::showpoint 显示小数点 ios::dec 设定为十进制基准 ios::hex 设定为十六进制基准 ios::oct 设定为八进制基准 ios::fixed 以小数形式显示浮点数 ios::scientific 以科学记数法形式显示浮点数 在格式 2 中,第一个参数是一个设定值,而第二个参数参数是设定该值的标志域。表 2.9 列出了这两个参数可取的值。 表 2.9 输入输出格式状态标志符的标志位的作用参数 标志位 含义 标志取值 ios::basefield 整数的进制 ios::hex ios::oct ios::dec ios::floatfield 浮点数的精度及格式 ios::fixed ios::scientific Setf(long,long)首先将标志域清零,然后根据第一个参数对联标志域进行设置,它返回 该标志域重新设置之前的值,其类型也是 long。利用其返回值,可以保存该值,以备以后恢 复该状态。 [例 2.13] 按不同格式进行数据输出(EX2_13.cpp*)