格式化输出--part1

/*

设置输出字符的宽度
width(int)是iostream类的成员函数,可以通过cout对象来调用,即cout.width(int)
注:

1.width(int)只影响将要显示的一个对象,之后字段宽度会自动恢复为默认值
2.如果设定的字段宽度小于要输出的字符的宽度,则字符全部输出
3.如果设定的字段宽度大于要输出的字符的宽度,则字符右对齐输出,多余部分用空格填充

设置填充字段
cout.fill(char)可以设置填充字段
注:fill(char)会一直生效,直至重新设置

设置浮点数的显示精度
cout.precision(int)可以设置浮点数的显示精度(不包括小数点)
注:

1.如果设置的精度大于浮点数的位数,如果浮点数能根据IEEE754精确表示,则补零;如果浮点数不能精确表示,则尽量接近
2.如果设置的精度小于浮点数的位数,采用科学计数法表示
3.precision(int)会一直生效

setf()函数

setf()函数原型如下:
fmtflags setf(fmtflags)
fmtflags setf(fmtflags,fmtflags)
先看第一个原型。
其中fmtflags是一种标志类型,或者说标志位。
ios_base类的保护数据成员是一个15位的二进制数字,或者说是15个标志位,这15个标志位与ios类的15个枚举型常量一一对应,对应关系如下:
boolalpha    fixed    scientific    hex    oct    dec    internal    right    left    showpos    showpoint    showbase
0         0      0        0     0     1        0         0      0     0            0         0 
uppercase   unitbuf   skipws
0         0      1
即ios类的15个枚举型常量与ios_base类的15位二进制数字000 0010 0000 0001一一对应。另外,可以看到,二进制数字的15位除了skipws和dec对应的位数默认为1之外,其他均默认为0 (注:上表是VC++的对应关系)
15个标志的含义如下所示:
ios::boolalpha    bool型数值的输入和输出使用文本形式(即true或false)
ios::fixed        定点格式输出,即以小数点的形式表示浮点数
ios::scientific      用科学记数法表示浮点数
ios::hex          采用十六进制
ios::oct          采用八进制
ios::dec         采用十进制
ios::internal        输出格式为居中对齐
ios::right             输出格式为右对齐
ios::left          输出格式为左对齐
ios::showpos        在正数前面加上+号
ios::showpoint     显示末尾的0和小数点
ios::showbase      显示进制,即在十六进制数前添加0x,在八进制数前添加0
ios::uppercase     大写显示
ios::unitbuf     每次执行输出操作后均会清空缓冲区
ios::skipws      忽略输入流中的空白字符,即当我们输入的字符前面有空格时,存储的时候会自动忽略
注:
1.设置多个标志位用"|"隔开
2.默认对齐方式为右对齐
3.setf(ios::showpoint)与precision连用时,会输出小数点(单独的precision不会输出小数点)
4.ios::internal输出格式为居中对齐,其中符号左对齐,值右对齐;如果是十六进制,则前缀0x左对齐
5.ios::uppercase只对十六进制起作用,即将0x变为0X
6.ios::fixed或ios::scientific与ios::presicion连用表示的是小数位数,而不是有效位数
7.以上15个枚举型常量称之为标准控制符

下面看setf()的第二种原型,即:
fmtflags setf(fmtflags,fmtflags)
其中第一个参数是要开启的标志位,第二个参数是要清除的标志位,标志位的清除通过指示标志位来实现
指示标志位共有三个,如下:
ios::basefield 指示相关标志位:dec、oct、hex
ios::adjustfield 指示相关标志位:left、right、internal
ios::floatfield 指示相关标志位:fixed、scientific
其实现原理是15个标志位中只有要清除的标志位为1,其余位为0,然后取反后与15个标志位进行与操作
另外,指示标志位也是ios类从ios_base类中继承而来,因此ios::adjustfield等效于ios_base::adjustfield
注:清除多个标志位用"|"隔开

清除标志位
unsetf()函数可以实现标志位的清除

注:unsetf()实现原理同指示标志位是一样的,都是15个标志位中只有要清除的标志位为1,其余位为0,然后取反后与15
个标志位进行与操作

*/

#include <iostream>
using namespace std;
int main()
{
const float number=-185.12f;
cout.width(10);
cout.setf(ios::left);
cout<<number<<endl;   //-185.12
cout.width(10);
cout.setf(ios::right,ios::adjustfield);
cout<<number<<endl;   // -185.12
cout.width(10);
cout.setf(ios::internal,ios::adjustfield);
cout<<number<<endl;   //- 185.12
return 0;
}

时间: 2024-11-04 17:33:43

格式化输出--part1的相关文章

python变量及用户交互,用户名格式化输出

变量 name = wwjun Name2 = "wwjun" print ("name,Name2") 用户交互 Username = input ("username:") Password = input ("password:") Print(username,password) 用户名格式化输出 name = input ("name:") age = input ("age:"

var_dump() 格式化输出 | 显示不全

PHP 使用‘var_dump($var)’时 没有格式化输出,显得乱糟糟的.原因是没有启用‘XDebug’扩展 [php.ini] ; XDEBUG Extension zend_extension = "x:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll" var_dump()方法输出时候会展示不全出现省略号 解决下 在php.ini里的[xdebug]节点中,追加一下配置: xdebug.var_dis

python 3 用户输入和格式化输出

# -*- coding:utf-8 -*- #用户输入 && 格式化输出 #getpass 模块是内置的,可以将输入的内容隐藏 import getpass username = input("username:") password = input("password:") age = int (input("age:")) job = input("job:") #print(type(age),type

Python 格式化输出

2017-07-29  22:03:07 一.使用格式符%进行格式控制 %[(name)][flags][width].[precision]typecode (name):命名 flags:可以有+,-,' '或0.+表示右对齐.-表示左对齐.' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐.0表示使用0填充 wideth : 表示显示宽度,占位个数 precision : 表示小数点后精度 typecode : 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型

python开发基础:格式化输出

1 #format的三种玩法 2 res1 = '{},{},{}'.format('joker','male',18) 3 print(res1) #类似于占位符 4 res2 = '{1},{0},{1}'.format('joker','male',18) 5 print(res2) #类似于列表角标查找 6 res3 = '{name},{age},{sex}'.format(sex='male',name='joker',age='18') 7 print(res3) #指定参数 8

String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} (转)

String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} (转) //格式为sring输出 // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); // Label2.Text = "asdfadsf"+a.ToString()+"adsfasdf"; // Label1.Text = string.Format("asdfadsf{0:C}adsfas

Python格式化输出

python 格式化输出细节,以备忘 转载自: http://www.cnblogs.com/plwang1990/p/3757549.html 1. 打印字符串 print ("His name is %s" % ("David")) 2.打印整数 print ("He is %d years old" % (25)) 3.打印浮点数 print ("His height is %f m" % (1.83)) 4.打印浮点数

[转]Python格式化输出

今天写程序又记不清格式化输出细节了……= =索性整理一下. python print格式化输出. 1. 打印字符串 print ("His name is %s"%("Aviad")) 效果: 2.打印整数 print ("He is %d years old"%(25)) 效果: 3.打印浮点数 print ("His height is %f m"%(1.83)) 效果: 4.打印浮点数(指定保留小数点位数) print

fortran之format格式化输出总结

先贴一段别人总结好的: 格式化输出的控制字符非常的丰富,但常用的并不多,一般说来:" I .F.E.A.X "是最常使用的几个格式,最 好把它们都记下来. Iw[.m] 以w个字符的宽度来输出整数,至少输出m个数字. 如:write(*,"(I5)") 100   输出:_ _100 ; 前面两空格 Fw.d 以w个字符文本框来输出浮点数,小数部分占d个字符宽,输出文本框的设置不中会出现*号. 如:write(*,"(F9.3)") 123.45