C++标准输出流

C++标准输出流

开发工具与关键技术:C++、VisualStudio
作者:何任贤
撰写时间:2019年07月06日

C++程序中,对数据的输出输入是以字节流实现的, 应用程序对字节序列作
出各种数据解释, I/O系统的任务就是在内存和外部设备之间稳定可靠地传
输数据和解释数据。
流类对象可以建立和删除,可以从流中获取数据和向流添加数据,c++的输出流都是以字节形式进行数据传递。
流库(stream library)是用继承方法建立的输入输出类库, 流库具有两个平行的基类:streambuf 和 ios 类,所有流类均以两者之一作为基类,意思是c++中所有输出输入流的基类都是streambuf 和 ios 类。
在c++中我们常用的是标准流,标准流是C++预定义的对象,提供内存与外部设备进行数据交互功能,流的操作是流类的公有成员函数。
我们在操作标准流的时候一般是用到iostream.h头文件,它包含所有的标准输出流操作。
我们来看一下输出流的操作有:
put()无格式,插入一个字节;
write()从无格式,插入一字节序列;
它们属于ostream类的公有成员,虽然ostream类作不止于这些,但是常用的就这两个,还有一个setf()它是流操作里面的函数,它的作用是设置输出格式。
ios提供直接设置标志字的控制格式函数, iostream和iomanip库还提供了一批控制符简化I/O格式化操作,也就是流操作。
输出流的标志字有:
状态标志 值 含义
left 0X0002 左对齐输出
right 0X0004 右对齐输出
internal 0X0008 在符号位和基指示符后填入字符
dec 0X0010 转换基制为十进制
oct 0X0020 转换基制为八进制
hex 0X0040 转换基制为十六进制
showbase 0X0080 在输出中显示基指示符
showpoint 0X0100 输出时显示小数点
uppercase 0X0200 十六进制输出时一律用大写字母
showpos 0X0400 正整数前加“+”号
scientific 0X0800 科学示数法显示浮点数
fixed 0X1000 定点形式显示浮点数
unitbuf 0X2000 输出操作后立即刷新流
stdio 0X4000 输出操作后刷新stdout 和 stderr
下面是上面三个方法和一些标志字的演示
#include
#include
#include
using namespace std;
void main()
{
char s = “Hello”;
int a = 10;
float b = 22.0/7;
cout.fill(’
’); // 置填充符
cout.width(10); // 置输出宽度
cout.setf(ios::left); // 左对齐
cout << s << endl;
cout << setiosflags(ios::right) <<setw(10) << s << setfill(’’) << endl;
cout << “put():”;
cout.put(‘6’);
cout << “\n” << “write():”;
cout.write(s,strlen(s));
cout.setf(ios::hex, ios::basefield);
cout << “\nhex标志:” << a << “\n”;
cout << “fixed和showpos标志:\n”;
cout.setf(ios::fixed | ios::showpos);
for (int i = 0; i < 5; i++)
{
cout.precision(i);//用参数设置数据显示精度
cout << b << “\n”;
}
cout << “scientific标志:\n”;
cout.setf(ios::scientific, ios::fixed | ios::showpos);
for (int i = 0; i < 5; i++)
{
cout.precision(i);//用参数设置数据显示精度
cout << b
1e5 << “\n”;
}
}
我们可以看到的输出左对齐和右对齐我用了两个方法,右对齐的方法是iomanip类的,它是格式控制符,输出常用的就是这三个setfill ( char c )设置填充符、setprecision ( int n )设置浮点数输出精度、setw ( int n )设置输出宽度、setiosflags ( ios::lFlags )设置lFlags指定的标志位,标志位就是上面说的标志字,下面就输出结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值