C++程序设计与案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2.5 输入/输出格式操作符

利用输入/输出格式操作符进行输入/输出前,要在程序的开头处添加 iomanip.h 头文件。表3.1给出了I/O流的常用格式操作符。

表3.1 I/O流的常用格式操作符

注意:当数据输出的实际宽度大于设定的宽度时,数据按实际宽度输出;若实际宽度小于设定的宽度,则在数据前面显示空白。即以默认的空格字符来填充。

【例3.4】 I/O流常用格式操作符1。

          #include <iostream>
          #include <iomanip>
          using namespace std;
          int main ( )
          {float h,r,l,s,sq,vq,vz;
          const float pi=3.1415926;
          cout<<"please enter r,h:";
          cin>>r>>h;
          l=2*pi*r;
          s=r*r*pi;
          sq=4*pi*r*r;
          vq=3.0/4.0*pi*r*r*r;
          vz=pi*r*r*h;
          cout<<setiosflags(ios::fixed)<<setiosflags(ios::right) <<setprecision(2);
          cout<<"l= "<<setw(10)<<l<<endl;
          cout<<"s= "<<setw(10)<<s<<endl;
          cout<<"sq="<<setw(10)<<sq<<endl;
          cout<<"vq="<<setw(10)<<vq<<endl;
          cout<<"vz="<<setw(10)<<vz<<endl;
          return 0;
          }

运行程序,输出的结果如下:

【例3.5】I/O流常用格式操作符2。

          #include <iostream>
          #include <iomanip>
          using namespace std;
          int main ( )
          {double c=3.1415926;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(0)<<c<<ends;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(1)<<c<<endl;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(2)<<c<<ends;

          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(3)<<c<<endl;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(4)<<c<<ends;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(5)<<c<<endl;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(6)<<c<<ends;
          cout<<setfill('*')<<setiosflags(ios::left)<<setw(20)<<setprecision(7)<<c<<endl;
          }

程序运行结果如下。