》对齐方式的控制
初始的对齐方式为右对齐,可以改变这一设置,使得输出采用左对齐方式或内部对齐方式。对齐方式的设置一直有效,直到再次设置对齐方式时为止。只有在设置了宽度的情况下,对齐操作才有意义。
有关操作符:
# left:在设定的宽度内左对齐输出,右端使用设定的填充字符填满。
等价函数调用:0.setf(ios_base::left,ios_base::adjustfield)
# right:(此为默认设置)在设定的宽度内右对齐输出,左端使用设定的填充字符填满。
等价函数调用:0.setf(ios_base::right,ios_base::adjustfield)
# internal:在设定的宽度内右对齐输出;但若有符号(-或+),符号置于最左端。
等价函数调用:0.setf(ios_base::internal,ios_base::adjustfield)
示 例:
cout<<setw(10)<<123<<"OK"<<endl;
cout<<left<<setw(10)<<123<<"OK"<<endl;
将输出:
123OK
123 OK
》小数点处理方式的控制
此设置只影响采用浮点格式输出的浮点数据。在初始状态下,若一浮点数的小数部分为0,则不输出小数点及小数点后的无效0;可以改变这一设置,使得在任何情况下都输出小数点及其后的无效0。小数点处理方式的设置一直有效,直到再次设置小数点处理方式时为止。
有关操作符:
# showpoint:即使小数部分为0,也输出小数点及其后的无效0。
等价函数调用:o.setf(ios_base::showpoint)
# noshowpoint:(此为默认设置)小数部分为0时不输出小数点。
等价函数调用:o.unsetf(ios_base::showpoint)
示 例:
cout<<723.0<<endl;
cout<<showpoint<<723.0<<endl;
将输出:
723
723.000
》填充字符的控制
在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满。初始填充字符为空格,可以将别的字符设置为填充字符。填充字符的设置一直有效,直到再次设置填充字符时为止。只有在设置了宽度的情况下,字符填充操作才有意义。
有关操作符:
# setfill(char c):设置填充字符
等价函数调用:io.fill(c)
函数返回此前设置的填充字符
示 例:
cout<<setw(10)<<12.34<<endl;
cout<<setfill('*')<<setw(10)<<12.34<<endl;
将输出:
12.34
*****12.34
》插入换行符
# endl:插入换行符(即‘\n’)并强制写缓冲区,实现输出的回车换行。
等价函数调用:o.put(o.widen('\n'));o.flush()
》输入输出数制状态的控制
初始状态为十进制,可以将之设置为八进制或十六进制。数制状态的设置一直有效,直到下一次设置为止。
有关的操作符:
# dec:(此为默认值)将整数按十进制输入输出。
等价函数调用:io.setf(ios_base::dec,ios_base::basefield)
# oct:将整数按八进制输入输出。
等价函数调用:io.setf(ios_base::oct,ios_base::basefield)
# hex:将整数按十六进制输入输出。
等价函数调用:io.setf(ios_base::hex,ios_base::basefield)
# setbase(int base):设置数制(8、10、16)
等价函数调用:io.setf(ios_base::oct,ios_base::basefield)等
# showbase:将输出的整数生成一个前缀,用以表示该数的数制:对于八进制数前面输出一个无效0;对于十六进制前面输出0x。
等价函数调用:o.setf(ios_base::showbase)
# noshowbase(此为默认设置)取消上述设置。
等价函数调用:o.unsetf(ios_base::uppercase)
示 例:
cout<<12<<'\t'<<oct<<9<<'\t'<<hex<<16<<'\t'<<dec<<10<<endl;
将输出:
12 11 10 10