您的位置:首页 > 编程语言 > C语言/C++

cout格式化输出 C++

2017-11-21 16:58 267 查看
由于class ifstream/ofstream分别为class istream/ostream派生来的,所以,下面介绍的cout输出的格式化,在文件的输出时使用方法相同。

由于使用iostream工具来设置一些格式值不太方便,为简化工作,C++在头文件iomanip中提供了一些控制符,他们能够提供流成员函数相同的功能。其成员函数与控制符的对应关系如下表格:

流成员函数与之作用相同的控制符作用
precision(n)setprecision(n)设置实数的精度为n位
width(n)setw(n)设置字段宽度为n位
fill(c)setfill(c)设置填充宇符c
setf()setiosflags()设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同
unsetf()resetioflags()终止已设置的输出格式状态,在括号中应指定内容
对成员函数和控制符的使用有下面两点说明:
1. 成员函数width(n)和控制符setw(n)只对其后的第一个输出项有效。

2. 在用成员函数setf和控制符setiosflags设置输出格式状态后,如果想改设置为同组的另一状态,应当调用成员函数unsetf(对应于成员函数self)或resetiosflags(对应于控制符setiosflags),先终止原来设置的状态,然后再设置其他状态。

使用setf()不是进行格式的、对用户最友好的方法,C++提供了多个控制符,能够调用setf(),并自动提供正确的参数。如下表格:

例如,std::cout<<std::left<<std::fixed; 该语句意义:打开左对齐和定点选项。

控制符调用含义
boolalphasetf(ios_base::boolalpha)输入和输出bool值,可以为true/false
noboolalphaunsetf(ios_base::boolalpha) 
showbasesetf(ios_base::showbase)对于输出,使用C++基数前缀(0, 0x)
noshowbaseunsetf(ios_base::showbase) 
showpointsetf(ios_base::showpoint)显示末尾的小数点
noshowpointunsetf(ios_base::showpoint) 
showpossetf(ios_base::showpos)在正数前面加上+
noshowposunsetf(ios_base::showpos) 
uppercasesetf(ios_base::uppercase)对于16进制输出,使用大写字母 E表示法
nouppercaseunsetf(ios_base::uppercase) 
internalsetf(ios_base::internal, ios_base::adjustfield)符号或基数前缀左对齐,值右对齐
leftsetf(ios_base::left, ios_base::adjustfield)使用左对齐
rightsetf(ios_base::right, ios_base::adjustfield)使用右对齐
decsetf(ios_base::dec, ios_base::basefield)使用基数10
hexsetf(ios_base::hex, ios_base::basefield)使用基数16
octsetf(ios_base::oct, ios_base::basefield)使用基数8
fixedsetf(ios_base::fixed, ios_base::floatfield)使用定点计数法
scientificsetf(ios_base::scientific, ios_base::floatfield)使用科学计数法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: