iomanip

在c++程序里面经常见到下面的头文件

#include <iomanip>

io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)

2作用编辑

主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:

dec 置基数为10 相当于"%d"

hex 置基数为16 相当于"%X"

oct 置基数为8 相当于"%o"

setfill( ‘c‘ ) 设填充字符为c

setprecision( n ) 设显示有效数字为n位

setw( n ) 设域宽为n个字符

这个控制符的意思是保证输出宽度为n。如:

cout << setw( 3 ) << 1 << setw( 3 ) << 10 << setw( 3 ) << 100 << endl; 输出结果为

_ _1_10100 (默认是右对齐)当输出长度大于3时(<<1000),setw(3)不起作用。

▲setw(n)用法: 通俗地讲就是预设宽度

如 cout<<setw(5)<<255<<endl;

结果是:

(空格)(空格)255

▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充

如 cout<<setfill(‘@‘)<<setw(5)<<255<<endl;

结果是:

@@255

应当指出,setfill和setw只作用于紧随其后的部分,例如

cout<<setfill(‘*‘)<<setw(6)<<123<<456;的运行结果为***123456,这里setfill(‘*‘)<<setw(6)只对 123 起作用输出了***123,456作为另一部分随后输出。

▲setbase(int n) : 将数字转换为 n 进制.

如 cout<<setbase(8)<<setw(5)<<255<<endl;

cout<<setbase(10)<<setw(5)<<255<<endl;

cout<<setbase(16)<<setw(5)<<255<<endl;

结果是:

(空格)(空格)377

(空格)(空格) 255

(空格)(空格)(空格) f f

▲ setprecision用法

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。

如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。

如果与setiosflags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

setiosflags(ios::fixed) 固定的浮点显示

setiosflags(ios::scientific) 指数表示

setiosflags(ios::left) 左对齐

setiosflags(ios::right) 右对齐

setiosflags(ios::skipws) 忽略前导空白

setiosflags(ios::uppercase) 16进制数大写输出

setiosflags(ios::lowercase) 16进制小写输出

setiosflags(ios::showpoint) 强制显示小数点

setiosflags(ios::showpos) 强制显示符号

举例:


1

2

3

4

5

6

7

8

9

10

11

#include<iostream>

#include<iomanip>

usingnamespacestd;

intmain()

{

cout<<12345.0<<endl;//输出"12345"

cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;//输出"1.234"(遵循四舍六入五成双的原则,而不是四舍五入的原则)

cout<<setiosflags(ios::scientific)<<12345.0<<endl;//输出"1.23e+004"

cout<<setprecision(3)<<12345.0<<endl;//输出"1.23e+004"

return0;

}

时间: 2024-10-14 17:29:20

iomanip的相关文章

iomanip、cstring、string、sstream

#include<iomanip>          控   制   符                             作           用                                       dec   设置整数为十进制  hex  设置整数为十六进制  oct  设置整数为八进制  setbase(n)  设置整数为n进制(n=8,10,16)  setfill(n) 设置字符填充,c可以是字符常或字符变量  setprecision(n)  设置浮

C++&lt;iomanip&gt;控制符

C++<iomanip>控制符 c++ cout 输出格式 在c++程序里面经常见到下面的头文件 #include <iomanip> io代表输入输出,manip是manipulator(操纵器)的缩写 iomanip的作用: 主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等.它是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的: dec 置基数为10 相当于"%d&quo

C++ 标准库之 iomanip 、操作符 ios::fixed 以及 setprecision 使用的惨痛教训经验总结

本菜鸡自从退役之后就再也没怎么敲过 C++ 代码,在 C++ 语言下,求解关于浮点数类型的问题时,之前有碰到类似的情况,但是似乎都没有卡这块的数据,基本上用一个 setprecision 函数保留几位有效数字就 AC 了.但这次在计算任意五个数的平均值时卡在了一组数据上,问题如下: #include <iostream> #include <iomanip> #include <stdio.h> using namespace std; int main(){ floa

iomanip.h

http://baike.baidu.com/link?url=zuNLgcUVylhUYYefyV13F38NChIMx8nnCEWV5zkkTQMrrSdKPxUERZuydSHtp6sXukWv9QvYtPJRAw02MddZ-_ 若是提示找不到这个文件的话,证明安装的软件include下缺少这个头文件,拷贝一个进去就好了.

Codefroces 852 G. Bathroom terminal

G. Bathroom terminal Smith wakes up at the side of a dirty, disused bathroom, his ankle chained to pipes. Next to him is tape-player with a hand-written message "Play Me". He finds a tape in his own back pocket. After putting the tape in the tap

HDU3715(二分+2-SAT)

Go Deeper Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 3184    Accepted Submission(s): 1035 Problem Description Here is a procedure's pseudocode: go(int dep, int n, int m)beginoutput the valu

《现代c++程序设计》(美)Barbara Johnston----1

c++类与vector c++有许多标准库,这些标准库提供了大量预先定义好的函数,比如数学计算.文件输入/输出,文本操作等 同时,c++中还含有很多标准模板库,里面包含了大量的软件应用和类,程序员可以直接使用它们. 标准库:  作为c++语言的一部分的库,如cout,是标准库<iostream>中的一个对象,可以用来实现向屏幕的输出 STL         一种c++库,其中包含可以直接使用的类的 原型. 如vector就是STL类中的一种,它在一个线性列表中存储数据元素 简单的说,类是对一个

杭电1170

就是个简单的if else判断功能的水题目 思路 :就是读取.计算.利用判断语句 难点:我在做的时候判断是否是浮点小数那边出了点问题,因为我初始设置是double 所以输出的时候我强制类型转化为int 这是一个题目的要求. ac代码 #include <iostream> #include<math.h> #include <iomanip> #include<cstdio> #include<string> #include<map>

BZOJ3112 [ZJOI2013]防守战线

Description 战线可以看作一个长度为 n 的序列,现在需要在这个序列上建塔来防守敌兵,在序列第 i号位置上建一座塔有 Ci 的花费,且一个位置可以建任意多的塔费用累加计算.有 m个区间[L1, R1], [L2, R2], -, [Lm, Rm],在第 i 个区间的范围内要建至少 Di座塔.求最少花费. Input 第一行为两个数n,m. 接下来一行,有 n个数,描述 C数组. 接下来 m行,每行三个数 Li,Ri,Di,描述一个区间. Output 仅包含一行,一个数,为最少花费.