欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++输出格式控制 (VS2017)

程序员文章站 2022-03-28 20:21:51
...

常用的流操纵算子

直接上代码:

#include<iostream>
//流操纵算子的头文件
#include<iomanip>
#include<stdlib.h>
using namespace std;

int main()
{
	int t = 456;
	int n = 12;
	//测试进制控制
	//十进制输出
	cout << dec << n << endl;
	system("pause");
	//八进制
	cout << oct << n << endl;
	system("pause");
	//十六进制
	cout << hex << n << endl;
	system("pause");
	//自定义进制
	cout <<setbase(2)<< n << endl;//这里应该输出的是1100,但是我的VS2017输出的是12....在菜鸟工具上的输出也是12.。。。
	system("pause");
	//进制控制是连续起作用的
	cout << n << endl;
	system("pause");
	//设置回十进制
	cout << dec;
	/*
		现在开始测试用流操纵算子
		控制浮点数精度
	*/
	double d2 = 11245.256433;
	double de = 126.45678910;
	//默认情况下的输出
	cout << de << endl;
	system("pause");
	//用控制小数点后的位数的方式控制精度
	cout << fixed << setprecision(3) << de << endl;
	system("pause");
	//或者cout<<steiosflags(ios::fixed)<<setprecision(3)<<n<<endl;
	//用控制有效数字的方式控制精度(也就是用科学计数法)
	cout << scientific << setprecision(2) << d2 << endl;
	system("pause");
	/*
		现在测试宽度的控制
	*/
	int kw = 1234567;
	//设置宽度为6,小于kw的位数,无效
	cout << setw(6) << kw << endl;
	system("pause");
	//设置宽度为50
	cout << setw(50) << kw << endl;
	system("pause");
	//因为只有一次 的效果
	cout << kw << endl;
	system("pause");
	/*
		现在测试填充的控制
	*/
	//设置填充的时候要想设置一个合适的宽度,否则无效
	int tian = 12;
	//不先设置宽度
	cout << setfill('*') << tian << endl;
	system("pause");
	//设置宽度后设置填充字符,
	//这个标记不是一次性的,在设置其他的填充字符之前,一直有效
	cout << setw(20) << tian << endl; system("pause");
	//设置其他的填充字符
	cout << setw(20) << setfill('$') << tian << endl; system("pause");
	//恢复默认字符
	cout << setw(20)<<setfill(' ') << tian << endl;
	system("pause");
	/*
		现在测试对齐控制
	*/
	int  dui = 45;
	//默认对齐方式
	cout << setw(20) << dui << endl; system("pause");
	//设置为左对齐
	cout << setiosflags(ios::left) << setw(20) << dui << endl; system("pause");
	//对齐的设置是连续作用的
	cout << setw(20) << dui << endl; system("pause");
	//设置为右对齐的两种方式
	cout << resetiosflags(ios::left) << setw(20) << dui << endl; system("pause");
	cout << right << setw(20) << dui << endl; system("pause");
	/*
		自定义流操纵算子
		规定格式
		ostream& 函数名(ostream& output)
		{
		*****
		return **;
		}
		例子:
		ostream& tab(ostream& out)
		{
		return out<<'\t';
		}
		用的时候,cout<<78<<tab<<45<<endl;
		为什么可以自定义流操纵算子?
		因为 iostream 里对 << 进行了重载(成员函数)
		ostream & operator
		<<( ostream & ( * p ) ( ostream & ) ) ;
		该函数内部会调用p所指向的函数,且以 *this 作为参数
		hex 、dec 、oct 都是函数
	*/
}

输出:
C++输出格式控制 (VS2017)
综合实例:

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
	int n = 141;
	//1) 分别以十六进制、十进制、八进制先后输出 n 
	cout << "1) " << hex << n << " " << dec << n << " " << oct << n << endl;
	double x = 1234567.89, y = 12.34567;
	//2) 保留5位有效数字
	cout << "2) " << setprecision(5) << x << " " << y << " " << endl;
	//3) 保留小数点后面5位
	cout << "3) " << fixed << setprecision(5) << x << " " << y << endl;
	//4) 科学计数法输出,且保留小数点后面5位
	cout << "4) " << scientific << setprecision(5) << x << " " << y << endl;
	//5) 非负数要显示正号,输出宽度为12字符,宽度不足则用'*'填补
		cout << "5) " << showpos << fixed << setw(12) << setfill('*') << 12.1
		<< endl;
	//6) 非负数不显示正号,输出宽度为12字符,宽度不足则右边用填充字符填充
	cout << "6) " << noshowpos << setw(12) << left << 12.1 << endl;
	//7) 输出宽度为12字符,宽度不足则左边用填充字符填充
	cout << "7) " << setw(12) << right << 12.1 << endl;
	//8) 宽度不足时,负号和数值分列左右,中间用填充字符填充
	cout << "8) " << setw(12) << internal << -12.1 << endl;
	cout << "9) " << 12.1 << endl;
	return 0;
} 

输出:
C++输出格式控制 (VS2017))
参考资料:

程序设计与算法(三)C++面向对象程序设计
C++流操纵算子(格式控制)
CSDN_C++流操作算子