cout 格式化输出
2011-11-19 19:32
274 查看
cout 格式化输出
将 cout 的 flag 保存到变量, 以便修改后的恢复
ostream::fmtflags old=cout.flag() ;
//无参将返回当前flag 值
cout.flag(old) ;
// 恢复到原先保存的值
将 bool 值以 literals 输出
cout <<"numeric:"
<<true<<"or"
<<false<<endl;//
1 or 0
cout <<"literals:"
<<boolalpha<<true<<"or"
<<false<<endl;//
true or false
cout <<"literals:"
<<boolalpha<<0<<endl;//
0 原因: 0 在cout中不等价于 false
一旦我们使用 boolalpha 将改变 cout 对 bool 值的输出格式. 此后的 cout 都会将 bool 输出为literals.
将 bool 值以 numeric 输出
cout <<"numeric:"
<<noboolalpha<<true<<"or"
<<false<<endl;//1 or 0
从此以后, cout 对 bool 值的输出将恢复 numeric 格式
指定 Integral Values 的 Base
const intival
= 17;
//'ival' isconstant, so value never change
cout <<"oct:"
<<oct<<ival<<endl;//
21 : 8 进制
cout <<"dec:"
<<dec<<ival<<endl;//
17 : 10 进制
cout <<"hex:"
<<hex<<ival<<endl;//
11 : 16 进制
cout <<"hex:"
<<hex<<17.01<<endl;//
17.01 : 不受影响
如 boolalpha 一样, oct, dec, hex 也是 persistent. 一旦改变, 将影响后续的输出格式.
显示表明 Integer Values 的 Base
cout <<showbase;//
Show base when printing integralvalues
cout <<"oct:"
<<oct<<ival<<endl;//
21 : 8 进制
cout <<"dec:"
<<dec<<ival<<endl;//
017 : 10 进制
cout <<"hex:"
<<hex<<ival<<endl;//
0x11 : 16 进制
cout <<"hex:"
<<hex<<17.01<<endl;//
17.01 : 不受影响
cout <<noshowbase;//
Reset state of the stream
若想改变16进制字母的大小, 可以结合uppercase/nouppercase
cout <<showbase<<uppercase;
cout <<"hex:"
<<hex<<15<<endl;//
0XF 大写形式
cout <<nouppercase;
cout <<"hex:"
<<hex<<15<<endl;//
0xf 小写形式
showbase 与 noshowbase 的作用周期也是 persistent
对于 float/double 型, 有三种格式化控制
一: 输出精度 precision : by default is 6pricision
控制了至多一共会输出多少个数字.
当要输出的数字多余指定的值时, 将发生四舍五入(rounded);
当要输出的数字少于指定的值时,则实际输出的数字个数将少于指定值.
// cout.pricision(4) ;//
等价于 cout<<setprecision(4);
cout <<setprecision(4)<<12.345678<<endl;//
12.35 rounded!
cout <<setprecision(10)<<12.345678<<endl;//
12.345678 其实内部发生了 rounded, 而结果正好进位,与原值相同
cout <<cout.precision()<<endl;//
输出当前精度
二: 表现形式 notation :'very large and very small values are printed usingscientific notation. other values usefixeddecimal.'
notation 控制了输出的形式 : 科学计数法(scientific) 和定点小数(fixed)
float f=101
/ 6.0;
cout <<fixed<<f<<endl;//
16.83334 : 小数点后共6位
cout <<scientific<<f<<endl;//
1.683333e+001 : 小数点后共6位
恢复到初始状态
cout.unsetf(ostream::floatfield);
// Retrieve to default handling fornotation
cout <<f<<endl;//
16.8333 : 所有数字共6位
三: 输出十进制浮点 'Bydefault, when the fractional part of a floating-point value is 0,the decimal point is not displayed. Theshowpointmanipulator forces the decimal point ot be printed.'
cout <<10.0<<endl;//
10
cout <<showpoint<<10.0<<endl;//
10.0000
cout <<noshowpoint<<endl;//
Revert to default handling of decimal
输出填充 Padding the Output
setw to specify the
minimum space for the next numeric or string value.
cout <<setw(10)<<12.3<<endl;//
______12.3
cout <<setw(10)<<12<<3<<endl;//
________123
cout <<setw(3)<<12.345<<endl;//
If the total output is more than3, it can be extended
left to left-justify theoutput.
cout <<left;//
left-justify
cout <<setw(5)<<12<<setw(5)<<34<<endl;//
12___34___
right toright-justify the output. Output is right-justified budefault.
cout <<right;//
By default
cout <<setw(5)<<12<<setw(5)<<34<<endl;//
12___34___
internal controls placement ofthe sign on negative value.internal left-justifies the signand right-justifies the value, padding any intervening space withblanks.(ifsetfill notset)
cout <<internal;//
Bydefault
cout <<setw(5)<<-12<<endl;//
12___34___
setfill letsus specify an alternative character to use when padding the output.By default, the value is a space.
cout <<setfill('*');//
By default
cout <<setw(5)<<12<<endl;//
12___34___
Header Files
ManipulatorsDefined in <iomanip>
setfill(charch)Fill whitespace with
'ch'
setprecision(intn) Set floating-pointprecision to'n'
setw(int w) Read or write value to'w'characters
setbase(intb) Output integersinbase
'b'(only'b'is8/10/16could
the functionwork)
相关文章推荐
- cout格式化输出示例
- c++ cout 格式化输出
- cout 格式化输出
- cout格式化输出
- c++ cout格式化输出函数详解
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串
- C++中格式化cout输出
- cout 格式化输出
- cout格式化输出
- 使用cout进行格式化输出(1)
- C++ cout格式化输出
- cout格式化输出
- (C++)cout格式化输出示例
- cout 格式化输出详解
- cout的格式化输出
- C/C++的格式化输出(2)--cout
- C++ cout 格式化输出方法
- C++中 cout的格式化输出(保留小数)
- 使用cout格式化输出字符串
- 关于C++的输出流cout格式化输出