正文

C++入门 第三章 *3.4.2 在输入流与输出流中使用控制符2008-08-20 19:40:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/37720.html

分享到:

 

上面介绍的是使用coutcin时的默认格式。但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C++提供了在输入输出流中使用的控制符(有的书中称为操纵符),见书中表3.1
需要注意的是: 如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。
举例: 输出双精度数。
 
double a=123.456789012345;a赋初值
(1) cout<<a;输出: 123.456 
(2) cout<<setprecision(9)<<a;输出: 123.456789 
(3) cout<<setprecision(6);恢复默认格式(精度为6)
(4) cout<< setiosflags(iosfixed);输出: 123.456789
(5) cout<<setiosflags(iosfixed)<<setprecision(8)<<a;输出: 123.45678901
(6) cout<<setiosflags(iosscientific)<<a;输出: 1.234568e+02
(7) cout<<setiosflags(iosscientific)<<setprecision(4)<<a; 输出: 1.2346e02
下面是整数输出的例子:
int b=123456;b赋初值
(1) cout<<b;输出: 123456
(2) cout<<hex<<b; 输出: 1e240    
(3) cout<<setiosflags(iosuppercase)<<b;输出: 1E240    
(4) cout<<setw(10)<<b<<,<<b; 输出:     123456123456
(5) cout<<setfill(*)<<setw(10)<<b;输出: **** 123456
(6) cout<<setiosflags(iosshowpos)<<b;输出: +123456
 
如果在多个cout语句中使用相同的setw(n),并使用setiosflags(iosright),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。
3.1 各行小数点对齐。
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
double a=123.456,b=3.14159,c=-3214.67;
cout<<setiosflags(iosfixed)<<setiosflags(iosright)<<setprecision(2);
      cout<<setw(10)<<a<<endl;
      cout<<setw(10)<<b<<endl;
      cout<<setw(10)<<c<<endl;
return 0;
}
 
输出如下:
     123.46                   (字段宽度为10,右对齐,取两位小数)
         3.14
  -3214.67
先统一设置定点形式输出、取两位小数、右对齐。这些设置对其后的输出均有效(除非重新设置),而setw对其后一个输出项有效,因此必须在输出a,b,c之前都要写setw(10)

阅读(3992) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册