流的输入输出控制:iomanpi库中的流操作算子的简单用法
这是本人第一次写博客,也是一段与之前不同的编程学习之路的开端。
本人在学习c++初期,对cout,cin输入输出数据的格式控制并不清楚,于是在一个编程学习平台找了一道题目,几次尝试
最终验证集依然有没有通过的,最后看了答案,才明白是由于考虑不周全,最后决定整理一下格式控制用法。
题目如下
实现输出不同精度PI的功能
具体要求如下:
1.输入的数为一个小于 15 的非负整数 n ;
2.输出 5 个不同精度的PIPI,即小数点后面分别保留 n,n+1 ,n+2 ,n+3 ,n+4 位的PIPI,每个PIPI分别独占一行。
输出格式
测试输入:4
预期输出:
3.1416
3.14159
3.141593
3.1415927
3.14159265
作者本以为只是利用循环加上setprecision()算子便可以达到目的,然而一直未能通过,最后才知道少考虑了n=0的情况,
本想着 利用if语句进行判断即可解决,但是查看了答案发现可以更加简单,意识到是自己知识储备的欠缺
下面给出相关知识:
流输入输出也可以进行格式控制, C++ 中是通过流操纵算子来实现的。流操纵算子是在头文件 iomanip 中定义的
,因此要使用这些流操纵算子,必须包含该头文件。
1.// 包含流操作算子库
2.#include <iomanip>
C++ 的 iomanip 库提供了多种流操纵算子,来实现不同的格式控制功能,包括设置域宽、设置精度、设置和清除格式化标志、设置域填充字符、在输出流中插入空字符、跳过输入流中的空白字符等,下表为一些常用的流操作算子:
下面本关主要介绍setbase(b)、setprecision(n)、setiosflags(long)和setw(n)算子
控制进制基数
对于标准输出流 cout 可以使用 setbase 来设置输出整数的进制基数(只支持8、10、16进制),如:
1.// 以八进制形式输出整数 n
2.cout << setbase(8