c++头文件iomanip.h中 setw()、setprecision()、setbase

简介:
#include <iostream>    //不要用iostream.h ,会出现好多问题
#include <iomanip> // io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n)
                                //,setbase(int   n),setfill(char c)的.
setw(n)用法: 通俗地讲就是预设宽度
如 cout<<setw(5)<<255<<endl;
结果是:
(空格)(空格)255
setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
如 cout<<setfill('@')<<setw(5)<<255<<endl;
结果是:
@@255
setbase(int n) : 将数字转换为 n 进制.
如 cout<<setbase(8)<<setw(5)<<255<<endl;
     cout<<setbase(10)<<setw(5)<<255<<endl;
    cout<<setbase(16)<<255<<endl;
结果是:
(空格)(空格)377
(空格)(空格) 255
(空格)(空格) f f
▲ setprecision用法
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。 
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。 
例如,下面的代码分别用浮点、定点和指数方式表示一个实数: 

#include <iostream.h> 
#include <iomanip.h> //要用到格式控制符 

void main() 

double amount = 22.0/7; 
cout <<amount <<endl; 
cout <<setprecision(0) <<amount <<endl 
<<setprecision(1) <<amount <<endl 
<<setprecision(2) <<amount <<endl 
<<setprecision(3) <<amount <<endl 
<<setprecision(4) <<amount <<endl; 

cout <<setiosflags(ios::fixed); 
cout <<setprecision(8) <<amount <<endl; 

cout <<setiosflags(ios::scientific) 


<<amount <<endl; 


cout <<setprecision(6); //重新设置成原默认设置 


运行结果为: 
3.14286 


3.1 
3.14 
3.143 
3.14285714 
3.14285714e+00 

该程序在32位机器上运行通过。 
在用浮点表示的输出中,setprecision(n)表示有效位数。 
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。 
在用定点表示的输出中,setprecision(n)表示小数位数。 
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。 
在用指数形式输出时,setprecision(n)表示小数位数。 
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8 

setw(n)是设置域宽。 
就是你的输出要占多少个字符 
比如: 
cout<<setw(5)<<12345<<endl; 
就输出 
12345 
cout<<setw(6)<<12345<<endl; 
输出 
12345 
而如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。 
如你的cout<<setw(4)<<12.3456<<endl; 
就输出12.3456


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/188450,如需转载请自行联系原作者
相关文章
|
7月前
|
C语言 C++
C/C++ 自定义头文件,及头文件结构详解
还是从"stdio.h"说起,这是C语言中内置的标准库,也就是说,头文件很多时候其实就是一个“库”,类似于代码的仓库,也就是说将某些具有特定功能的常量、宏、函数等归为一个大类,然后放进这个“仓库”,就像stdio.h就是一个标准输入/输出的头文件
232 1
|
7月前
|
C++
C++ 数学函数、头文件及布尔类型详解
C++ 支持数学操作,如`max`和`min`函数找最大值和最小值,以及`&lt;cmath&gt;`库中的`sqrt`、`round`等数学函数。`bool`类型用于布尔逻辑,取值`true`(1)或`false`(0)。布尔表达式结合比较运算符常用于条件判断,例如在`if`语句中检查年龄是否达到投票年龄。在代码示例中,`isCodingFun`和`isFishTasty`变量分别输出1和0。
194 1
C4.
|
7月前
|
算法 程序员 C++
C++标准头文件结构
C++标准头文件结构
C4.
98 0
|
7月前
|
程序员 C语言 C++
C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)
C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)
|
7月前
|
IDE 编译器 开发工具
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
222 0
|
算法 C++ 容器
86 C++ - 算法头文件
86 C++ - 算法头文件
52 0
|
C++
【C++】关于fixed和setprecision的学习和介绍
【C++】关于fixed和setprecision的学习和介绍
362 0
|
1月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
4月前
|
编译器 C++
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
63 0
|
6月前
|
C++
C++中的setprecision: fixed: scientific等函数
C++中的setprecision: fixed: scientific等函数
83 0