计算机程序设计c++ 13-2:标准输出

标准输出流

标准输出流——流向标准输出设备(显示器)的数据
一般使用cout流对象进行输出操作

例如:
用流插入运算符<<输出数据
cout << "a=" << a << endl;

coutostream类的对象,除了<<符号外,常用函数如下:
函数 功能

  • put 无格式插入一个字节
  • write 无格式插入一字节序列
  • flush 刷新输出流
  • seekp 移动输出流指针
  • tellp 返回输出流中指定位置的指针值

用流对象的成员函数控制输出格式

  • (1)设置状态标志流成员函数setf

调用格式:cout.setf(ios::状态标志);

  • (2)清除状态标志流成员函数unsetf

调用格式:cout.unsetf(ios::状态标志);

  • (3)设置域宽流成员函数width

调用格式:cout.width(n);
只对下一次流输出有效,输出完成后该函数的作用就消失。

  • (4)设置实数的精度流成员函数precision

调用格式:cout.precision(n);
参数n在十进制小数形式输出时代表有效数字。在以fixed形
式和scientific形式输出时代表小数位数

  • (5)填充字符流成员函数fill

调用格式:cout.fill(ch);

cout.setf(ios::状态标志)cout.unsetf(ios::状态标志)中常用的状态标志如下:
在这里插入图片描述
在引用这些值之前要加上ios::, 如果有多项标志,中间用"|"分隔
比如cout.setf(ios::left| ios::showpoint)

例子

#include<iostream>
using namespace std;
int main()
{
	cout.setf(ios::left|ios::showpoint); //设左对齐,以一般实数方式显示
	cout.precision(5); //设置除小数点外有效数字为5
	cout<<123.456789<<endl;
	
	cout.width(10); //设置显示区域宽10
	cout.fill('*'); //在显示区域空白处用*填充
	cout.unsetf(ios::left); //清除状态左对齐
	cout.setf(ios::right); //设置右对齐
	cout<<123.456789<<endl;
	
	cout.setf(ios::left|ios::fixed); //设左对齐,以固定小数位数显示
	cout.precision(3); //设置实数显示3位小数
	cout<<999.123456<<endl;
	cout<<99.123456<<endl;
	
	cout.unsetf(ios::left|ios::fixed); //清除状态左对齐和定点格式
	cout.setf(ios::left|ios::scientific); //设置左对齐,以科学计数法显示
	cout.precision(3); //设置保留3位小数
	cout<<123.45678<<endl;
	return 0; 
}

运行结果如下:

123.46
****123.46
999.123
99.123
1.235e+002

用c++流格式控制符控制输出格式

多数C++流格式控制符与前面的成员函数有等价对应的关系,两者都可实现同样的功能
头文件#include <iomanip>

c++流格式控制符一般与符号<<联用(挨着使用)

(1)dec:设置后面的整数按10进制方式显示;
(2)hex:设置后面的整数按16进制方式显示;
(3)oct: 设置后面的整数按8进制方式显示;
(4)endl:输出一个换行符并刷新输出流;
(5)setfill(c):设置填充符(默认为空格);
(6)setprecision(n):设置实数精度n, 原理和成员函数precision一样;
(7)setw(n):设置域宽n;
(8)setiosflags(flags): 设置状态标志,多个用’|'分隔
(9)resetiosflags(flags):清除状态标志,多个用’|'分隔

setiosflags和resetiosflags的常用状态标志
状态标志 功能

  • ios::left 按域宽左对齐输出
  • ios::right 按域宽右对齐输出
  • ios::fixed 固定小数位数输出
  • ios::showpos 强制设置显示正号
  • ios::uppercase 科学记数法或16进制输出数据时字母大写
  • ios::lowercase 科学记数法或16进制输出数据时字母小写

例子:

#include <iostream>
#include <iomanip>  // 流格式控制头文件
using namespace std;
int main()
{
	int a=128;
	cout<<"dec:"<<dec<<a<<endl; //以10进制形式输出
	cout<<"hex:"<<hex<<a<<endl; //以16进制形式输出
	cout<<"oct:"<<oct<<a<<endl; //以8进制形式输出
	
	char pt[]="xi'an";
	cout<<setw(10)<<pt<<endl; //域宽为10,输出字符串
	//指定域宽10,输出字符串,空白处以"*"填充
	cout<<setfill('*')<<setw(10)<<pt<<endl;
	
	double B=27.123456789;
	//按指数形式输出,8位小数
	cout<<setiosflags(ios::scientific)<<setprecision(8);
	cout<<"B="<<B<<endl; //输出B值
	
	cout<<"B="<<setprecision(4)<<B<<endl; //4位小数
	cout<<resetiosflags(ios::scientific); //清除格式设定
	
	//改为小数形式输出,小数点后6位
	cout<<"B="<<setiosflags(ios::fixed)<<setprecision(6)<<B;
	cout<<endl;
	return 0; 
}

输出结果为

dec:128
hex:80
oct:200
xi'an
*****xi'an
B=2.71234568e+001			(输出8位小数)
B=2.7123e+001				(输出4位小数)
B=27.123457					(输出6位小数)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值