文档详情

134C++格式化输出,C++输出格式控制.doc

发布:2017-02-01约4.4千字共5页下载文档
文本预览下载声明
在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式 输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是我们已经介绍过的使用控制符的方法,第2种是使用流对象的有关成员函数。分别叙述如下。 使用控制符控制输出格式 控制格式的使用方法这里不再赘述,仅举例说明。 [例13.2] 用控制符控制输出格式。 #include?iostream #include?iomanip//不要忘记包含此头文件 using?namespace?std; int?main() { int?a; coutinput a:; cina; coutdec:decaendl;?//以十进制形式输出整数 couthex:hexaendl;?//以十六进制形式输出整数a coutoct:setbase(8)aendl;?//以八进制形式输出整数a char?*pt=China;?//pt指向字符串China coutsetw(10)ptendl;?//指定域宽为,输出字符串 coutsetfill(*)setw(10)ptendl;?//指定域宽,输出字符串,空白处以*填充 double?pi=22.0/7.0;?//计算pi值 //按指数形式输出,8位小数 coutsetiosflags(ios::scientific)setprecision(8); coutpi=piendl;?//输出pi值 coutpi=setprecision(4)piendl;?//改为位小数 coutpi=setiosflags(ios::fixed)piendl;?//改为小数形式输出 return?0; } 运行结果如下: input a:34↙(输入a的值) dec:34?????????????????? (十进制形式) hex:22?????????????????? (十六进制形式) oct:42?????????????????? (八进制形式) ? ? ? ? ?China?????????????? (域宽为) *****China?????????????? (域宽为,空白处以*填充) pi=3+00??????? (指数形式输出,8位小数) pi=3.1429e+00??????????? (指数形式输出,4位小数) pi=3.143???????????????? (小数形式输出,精度仍为) 用流对象的成员函数控制输出格式 除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式。用于控制输出格式的常用的成员函数见表13.4。 表13.4 用于控输出格式的流成员函数 流成员函数 与之作用相同的控制符 作用 precision(n) setprecision(n) 设置实数的精度为n位 width(n) setw(n) 设置字段宽度为n位 fill(c) setfill(c) 设置填充宇符c setf() setiosflags() 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同,如表13.5所示 unsetf() resetioflags() 终止已设置的输出格式状态,在括号中应指定内容 流成员函数setf和控制符setiosflags括号中的参数表示格式状态,它是通过格式标志来指定的。格式标志在类ios中被定义为枚举值。因此在引用这些格式标志时要在前面加上类名ios和域运算符“::”。格式标志见表13.5。 表13.5 设置格式状态的格式标志 格式标志 作用 ios::left 输出数据在本域宽范围内向左对齐 ios::right 输出数据在本域宽范围内向右对齐 ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充 ios::dec 设置整数的基数为10 ios::oct 设置整数的基数为8 ios::hex 设置整数的基数为16 ios::showbase 强制输出整数的基数(八进制数以0打头,十六进制数以0x打头) ios::showpoint 强制输出浮点数的小点和尾数0 ios::uppercase 在以科学记数法格式E和以十六进制输出字母时以大写表示 ios::showpos 对正数显示“+”号 ios::scientific 浮点数以科学记数法格式输出 ios::fixed 浮点数以定点格式(小数形式)输出 ios::unitbuf 每次输出之后刷新所有的流 ios::stdio 每次输出之后清除stdout,?stderr [例13.
显示全部
相似文档