8.IO类

IO对象

  • IO对象不能拷贝或者赋值,因此也不能将形参或者返回类型设为流类型
  • 通常使用引用传递或者返回流对象。

流的错误状态

管理输出缓冲

导致缓冲刷新的原因

  • 程序结束
  • 缓冲区满
  • 操纵符endl,flush等
  • 使用unitbuf、nounitbuf设置流的内部状态。cerr设置为unitbuf,所以所有输出操作都会立即刷新缓冲区。
  • 一个输出流可能关联到另一个流,当读写到被关联的流时,会刷新缓冲区。默认情况下cin,cerr都关联到cout,当使用cin读入,或者cerr输出是,都会导致cout缓冲区刷新。
操纵符

endl,输出缓冲区内容和一个换行符,刷新缓冲区

flush,输出缓冲区,刷新,不带多余字符

ends,输入内容和一个空字符,刷新

cout << "hi"<<endl<<"jane";
cout << "hi"<<flush<<"jane";
cout <<"hi"<<ends<<"jane";

分别输出:
1

hi

jane

2

hijane

3

hi jane

关联输入输出流

流成员函数tie完成这个工作,它有两个重载版本。

  1. 不接受任何参数,返回和它绑定的输出流对象。
  2. 接受一个ostream指针,将这个输入流关联到这个ostream。
	cin.tie(&cout);
	ostream* old_tie = cin.tie(nullptr);//cin不喝任何关联
	cout << "hello";
	int a;
	cin >> a;
	cin.tie(&cerr);//和cerr关联
	cin.tie(&old_tie);//重建关联
文件输入输出

因为fstream是在iostream中派生的,所以只用将io换成fstream就行,open,close 的应用。

文件格式mode
向string流输入输出

也差不多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东风中的蒟蒻

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

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

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

打赏作者

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

抵扣说明:

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

余额充值