3输入输出的格式控制 73.1用ios类的成员函数进行格式控制 ios类中有几个成员函数可以用来对输入输出进行格式控制。 主要控制状态标志字、域宽、填充字符及输出精度 1.状态标志字 状态标志存放在数据成员 long x flags中。ios类 public中定义 了一个枚举,它的每个成员可以分别定义状标志字的一个位,每 位都称为一个状标志位
7.3输入输出的格式控制 7.3.1 用ios 类的成员函数进行格式控制 ios类中有几个成员函数可以用来对输入输出进行格式控制。 主要控制 状态标志字、域宽、填充字符及输出精度。 1. 状态标志字 状态标志存放在数据成员long x_flags 中。ios 类 public 中定义 了一个枚举,它的每个成员可以分别定义状标志字的一个位,每 一位都称为一个状标志位。 5
这个枚举定义如下: enum{00000000001 skipws=0x0001,跳过输入中的空白,可用于输入 left=0x0002,左对齐输出,可用于输出 right=0x0004,右对齐输出,可用于输出 interna|=0x0008,在符号位和基指示符后填入字符,可用于输出 dec=0x0010,转换基数为十进制,可用于输入或输出 oct=0x0020,转换基数为八进制,可用于输入或输出 hex=0x0040,转换基数为十六进制,可用于输入或输出 showcase=0x0080,在输出时显示基指示符,可于输入或输出 showpoint=0x0100,在输出时显示小数点,可用于输出 uppercase=0x0200,十六进制输出时,表示制式的和表示数值的 字符一律为大写,可用于输出 showpos=0x0400,正整数前显示”+”符号,可用于输出 scientific=0x0800,用科学表示法显示浮点数,可用于输出 fied=0x1000,用定点形式显示浮点数,可用于输出 unitbuf=0x2000,在输出操作后立即刷新所有流,可用于输出 stdio=0x4000,在输出操作后刷新 stdout和 stderr.,可用于输
.这个枚举 定义 如下: enum{ 0000 0000 0000 0001 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,可用于输 出 }; 6
x flags取以上枚举值的并存,即 x_ flags上的每位长整数为16 位)中的01相当于一个枚举值。例如 x_ flags中放0x0011或 17即为000Q000000010001相当于0X0001与0x0010之 并 skipws(0x0001)0000000001 dec(0X0010)+0000000000010000 x_ flags(0x0011)0000000000010001
2 x_flags取以上枚举值的并存,即x_flags上的每一位(长整数为16 位)中的0 1相当于一个枚举值。例如 x_flags 中放 0x0011 或 17即为 0000 0000 0001 0001 相当于 0x0001 与 0x0010 之 并 skipws(0x0001) 0000 0000 0000 0001 dec (0x0010) + 0000 0000 0001 0000 x_flags (0x0011) 0000 0000 0001 0001 7
2.ios类中用于控制输入输出格式的成员函数 函数原型 功能 long ios:se( ong flags;设置状态标志fags long ios:unse( ong flags);清除状态标志,并返回前标志 long ios: flags( 测试状态标志 long ios: flags( ong flags;设置标志fags,并返回前标志 int ios: width(; 返回当前的宽度设置值 int ios: width(int w); 设置域宽W,返回以前的设置 int ios:: precision(mtp);设置小数位数p返回以前的小数位数 char ios: fillo 返回当前的填充字符 char ios: fill(char ch);2设置填充字符ch返回当前的填充字符
2. ios类中用于控制输入输出格式的成员函数 函数原型 功能 long ios::setf(long flags); 设置状态标志flags long ios::unsetf(long flags); 清除状态标志,并返回前标志 long ios::flags(); 测试状态标志 long ios::flags(long flags); 设置标志flags,并返回前标志 int ios::width(); 返回当前的宽度设置值 int ios::width(int w); 设置域宽w,返回以前的设置 int ios::precision(int p); 设置小数位数p返回以前的小数位数 char ios::fill(); 返回当前的填充字符 char ios::fill(char ch); 设置填充字符ch返回当前的填充字符 8
(1)设置状态标志 设置状态标志,即是将某一状态标志位置“1”,可使用sett函 数 其一般的调用格式为:流对象.set(ios:状态标志) 例71 include<iostream.h> maino i istream cin ∥)象cn可不定义 ostream cout: ∥)象cout可不定义 cin, sett(ios: ships);∥键盘输入时跳过输入空白 cout setf(ios: left) ∥设置输出左对齐 cout set(ios: showpos ios: sciengific);∥中间用运算符“|”分 隔 cout<<567<<”<<567.89<<end; 设置 showpos使得每个正数前添加“+”号,设置 sciengific使浮点 数按科学表示法 指数形式进行显示,输出结果: +567 +56789e02
(1)设置状态标志 设置状态标志,即是将某一状态标志位置“1”,可使用setf()函 数 其一般的调用格式为:流对象.setf(ios::状态标志); 例7.1 #include<iostream.h> main() { istream cin; //对象cin可不定义 ostream cout; //对象cout可不定义 cin.setf(ios::shipws); //键盘输入时跳过输入空白 cout.setf(ios::left); //设置输出左对齐 cout.setf(ios::showpos | ios::sciengific);//中间用运算符 “|”分 隔 cout<<567<<“ ” <<567.89<<endl; } 设置showpos使得每个正数前添加“+”号, 设置sciengific使 浮点 数按科学表示法 (指数形式)进行显示,输出结果: +567 +567.89e02 注意:要设置多项标志时,中间用或运算符 “|” 分隔。 9