C++输入中iomanip的使用(基础)

  • Post author:
  • Post category:其他



1,include <iomanip>库的应用

在iomanip库中,比较常用的有关于进制的转换,小数点的保留,以及域宽等的使用。

首先介绍关于进制的转换,需要用到setbase(),即当我们想要转换进制的时候,需要在括号里写入,具体表达方式如下:

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
	int a, b;
	cout << setbase(8) << 250 << endl;//转化为几进制
    return 0;
}

同样的,八进制,十六进制,十进制还有特定的写法,分别为dec,oct,hex

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
    cout<<dec<<250<<endl;//十进制
    cout<<oct<<250<<endl;//八进制
    cout<<hex<<250<<endl;//十六进制
    return 0;
}

接下来介绍关于域宽的知识:

在C++中,域宽的设置可以有两种方法,第一种是width(),需要在开头写cout.width(),括号内是想要设置的域宽。第二种为setw(),在想要设置的对象之前写。

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
	cout.width(7);
	cout << "nudt" << endl;//空格是在字符前面
	cout << setw(5) << 250 << endl;//对于输出的250进行五个位置的占取,多余为空格
}

需要注意的点:

1.对于英文字符来说,4个字符对应四个域宽,但是对于中文字符,四个字符不对应四个域宽。

2.如果选取的域宽小于本身字符或数字占的宽度,则会输入原字符。

3.对应的空格是在左边,而非右边。


接下来

介绍如何设置精度。

用函数表示可以使用precision,使用方法与width()函数相同。

还可以用操纵流算子setprecision(),使用方法与setw()函数相同。

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
	cout.precision(5);
	cout << 3.1234567 << endl;
	cout << setprecision(5) << 3.2134567 << endl;
}

需要注意的是,precision函数与setprecision流算子括号之后的n表示的是一共保留多少位,即要算上小数点之前的数字。

此外,再介绍一种辅助设置格式,setiosflags(ios::showpoint) ,表示按精度把后面的空白补 0 输出,比较常用。

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
	cout << setiosflags(ios::showpoint) << setprecision(5) << 3.213 << endl;
}

最后介绍setfill, setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。使用方法:setfill(”),单引号中添加想要替代空格的字符。

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
	cout << setfill('*') << setw(7) << 250 << endl;
}



版权声明:本文为summer_wrr原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。