iomanip全称为IO Manipulators,意思是输入输出操纵器。iomanip头文件中一共有400余行代码,极大的题高了输入输出格式变换的便捷程度。但是在写代码解决的问题的过程中,鄙人总结了它一些常见用途。

它的作用


1.十进制向其他进制的转化

这里我们仅仅举16进制的例子,如果要转化为其他进制只需要将hex更换即可

#include "iostream"
#include "iomanip"
using namespace std;int main(){//使用cout << hex 和 setiosflags(ios::showbase|ios::uppercase)cout << "使用cout << hex 和 setiosflags(ios::showbase|ios::uppercase)" <<endl;cout << hex;   //代表十六进制cout << setiosflags(ios::showbase | ios::uppercase);   //需要前缀并且要大写cout << 100 <<endl;return 0;
}

执行结果:

当然如果不想要进制前缀的话,也可以这样:

#include "iostream"
#include "iomanip"
using namespace std;int main(){cout << "使用resetiosflags重设setioflags的设置" <<endl;cout <<resetiosflags(ios :: showbase | ios :: uppercase);cout << 100 <<endl;return 0;
}

或者直接暴力转换16进制。

#include "iostream"
#include "iomanip"
using namespace std;int main(){cout << "使用hex:" <<endl;cout << hex;cout << 100 <<endl;return 0;
}

执行结果:
最后隆重介绍一下我认为最便捷的一种进制转化方法

#include "iostream"
#include "iomanip"
using namespace std;int main(){//另一种实现十六进制的方式cout << "使用setbase(16)来设置十六进制" <<endl;cout << setbase(16);cout  << 100 <<endl;cout << "使用setbase(8)来设置八进制" <<endl;cout << setbase(8);cout << 100 <<endl;return 0;
}

执行结果:

(温馨提示:经过我的多次实验,setbase(x)中的x只能为8或者16,若是其他数字只能按照十进制来计算)

2.实现头部字符填充

#include "iostream"
#include "iomanip"
using namespace std;int main(){cout << "下面两行作为对比setfill 和 setw的效果范围:" << endl;cout << setfill('*') << setw(8);cout <<100 << endl;;cout << 100 << endl;return 0;
}

执行结果:
(值得注意的是,第二次输出的100却没有字符填充的待遇)

3.规定小数点位数

1) 第一种方式

#include "iostream"
#include "iomanip"
using namespace std;int main(){cout << "下面两行为setprecision的效果,效果为3和9" <<endl;double pi=3.1415926;cout <<setprecision(3);cout << pi <<endl;cout <<setprecision(9);cout << pi << endl;return 0;
}

执行结果:

可见,所规定的字符长度并不计算小数点所占的位数,并且值得注意的是,由于pi的长度(不带小数点)只有8位,因此第二次输出pi的时候仍旧输出8位,可见这一种输出方式具有着一定的灵活性(比较聪明)。

2) 第二种方式

  在对小数位数进行限定的过程中,我们有时候并不希望输出程序有多聪明,而是希望他能按照我们的意思去进行输出。比如,我们在oj平台中提交代码的时候,能够AC的往往是具有着严格数据规范的,因此我们可以使用以下的一种方式。
#include "iostream"
#include "iomanip"
using namespace std;int main(){double pi=3.1415926;cout << "下面两行为setprecision加上fixed" <<endl;cout << fixed;cout << setprecision(3);cout << pi <<endl;cout << setprecision(9);cout << pi << endl;return 0;
}

执行结果:

其实,也就是比上面多一个fixed罢了,这时候setprecision(x)规定的x便是输出数字的小数点后面的位数。当然如果觉得这种方法繁琐,也可以使用传统的printf("%.3f",m); 来进行数据格式的规范。





当然本篇文章到此也就告一段落,希望大家多多补充,原创不易,点个赞再走呗。

iomanip头文件在实战中的作用相关推荐

  1. C++万能库头文件在vs中的安装

    前言 C++万能库头文件在vs2019中的安装 一.C++万能库是什么? 1.C++万能库的定义:简而言之,就是一条语句代替了多条语句,包含了目前c++所包含的所有头文件 2.C++万能库的写法:#i ...

  2. c51语言的标准库函的头文件,C51编程中头文件的使用

    头文件在C51的编程中是不可缺少的部分.本文将对keil C中常用头文件予以说明,并就如何编写头文件进行初步介绍. 一.C51常见本征函数库 一些常见的头文件都是keil C自带的,在安装目录下的C5 ...

  3. c语言万能头,C++万能库头文件在vs中的安装步骤(图文)

    前言 C++万能库头文件在vs2019中的安装 一.C++万能库是什么? 1.C++万能库的定义:简而言之,就是一条语句代替了多条语句,包含了目前c++所包含的所有头文件 2.C++万能库的写法:#i ...

  4. 习题 8.5 将本章的例8.4改写为一个多文件的程序:1.将类定义放在头文件arraymax.h中;2.将成员函数定义放在源文件arraymax.cpp中;3.主函数放在源文件file1.cpp中。

    C++程序设计(第三版) 谭浩强 习题8.5 个人设计 习题 8.5 将本章的例8.4改写为一个多文件的程序: 1.将类定义放在头文件arraymax.h中: 2.将成员函数定义放在源文件arraym ...

  5. c语言iomanip头文件的作用,#includeiomanip.h在C语言中代表什么

    满意答案 tracyofme 2013.12.01 采纳率:44%    等级:11 已帮助:4995人 iomanip.h是I/O流控制头文件,就像C里面的格式化输出一样. 在新版本的c++中头文件 ...

  6. iomanip头文件的作用

    在c++程序里面经常见到下面的头文件: #include <iomanip> io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效.) 主 ...

  7. C++之——#include iomanip头文件

    iomanip在c++程序里面经常见到下面的头文件#include <iomanip>,io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有 ...

  8. c语言intrins函数,【转载】KEIL C 头文件INTRINS.H中的几个函数说明

    原标题: [51单片机]keil C51中的本征函数库及使用说明 为方便自己查找,已将标题改名 原文来源:http://blog.163.com/hooyang@126/blog/static/118 ...

  9. 没有头文件调用cpp_VS2017中同一个解决方案下不同工程的调用

    解决方案结构如下图所示:解决方案project1下有三个工程:project1(我会用它调用其余两个).project2(其头文件含一个.h 一个.cpp).project3(其头文件含两个.h 两个 ...

最新文章

  1. KDD Cup 2020 多模态检索赛道:数据分析
  2. WPF入门:数据绑定
  3. 模板:使用文件作为输入
  4. java的构造函数格式_java – 自定义MapReduce输入格式 – 找不到构造函数
  5. php执行只读文件,php实现以只读方式打开文件的方法
  6. java对接ldap_如何使用Java操作LDAP之LDAP连接(一)
  7. linux基础学习(九)
  8. Linux网络协议栈(四)——链路层(2)
  9. 摄像头水平视野垂直视野?_如何在“动物穿越:新视野”中的梦中游览某人的岛屿...
  10. falsk 请求没有返回值报错
  11. java 使用apollo,Springboot apollo原理及使用方法详解
  12. opencv3.4.0在ubuntu16.04上的安装
  13. java中的递归算法_java递归算法详解
  14. Hadoop配置Yarn
  15. 电脑软件:推荐一款磁盘空间分析工具——WizTree
  16. 传奇 SF 开服架设流程详细介绍:
  17. JSP中文乱码解决方案了解和TOMCAT中文乱码解决
  18. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...
  19. 【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件
  20. 一点一点解读紫书中例子--大整数类BigInteger (1)

热门文章

  1. 无需破解!激活正版Windows 7旗舰版 二枚神KEY
  2. JS原型 经典试题
  3. Continual Learning/Lifelong Learning/Incremental Learning
  4. 【论文阅读】WMH Segmentation Challenge 2017 及第一名解决方案
  5. oracle10g 64下载,oracle10g
  6. BusyBox 72 变
  7. 数据结构Python版(二)——链表
  8. git socks5 代理
  9. [ubuntu] 外挂硬盘
  10. HTTP服务器的本质