二、cout格式化输出
将 cout 的 flag 保存到变量, 以便修改后的恢复
ostream::fmtflags old = cout.flag() ; // 无参将返回当前 flag 值
cout.flag(old) ; // 恢复到原先保存的值
cout.setf设置标志
cout.setf(ios::right | ios::hex);
//设置16进制右对齐
cout.setf(ios::right, ios::adjustfield);
//取消其它对齐,设置为右对齐
cout.unsetf取消标志
cout.unsetf(ios_base::dec);
//
取消10进制
cout.setf(ios_base::hex
);
//设置为16进制
等同于
cout.setf(ios_base::hex, ios_base::dec);
//取消其它对齐,设置为右对齐
控制输出格式和成员函数
int width( ):设置域宽;
int fill( ):填充字符;
int precision( ):设置精度;
如果要与scanf和printf联合使用,务必在调用cout前加上cout.sync_with_stdio(),设置与stdio同步,否则输出的数据顺序会发生混乱。
flush和endl都会将当前缓冲区中的内容立即写入到屏幕上,而unitbuf/nounitbuf可以禁止或启用缓冲区。
- ios::dec
以10进制表示整数 - ios::hex
以16进制表示整数 - ios::oct
以8进制表示整数 - ios::showbase
为整数添加一个表示其进制的前缀 - ios::internal
在符号位和数值的中间插入需要数量的填充字符以使串两端对齐 - ios::left
在串的末尾插入填充字符以使串居左对齐 - ios::right
在串的前面插入填充字符以使串居右对齐 - ios::boolalpha
将bool类型的值以true或flase表示,而不是1或0 - ios::fixed
将符点数按照普通定点格式处理(非科学计数法) - ios::scientific
将符点数按照科学计数法处理(带指数域) - ios::showpoint
在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点) - ios::showpos
强制在正数前添加+号 - ios::skipws
忽略前导的空格(主要用于输入流,如cin) - ios::unitbuf
在插入(每次输出)操作后清空缓存 - ios::uppercase
强制大写字母