Chapter8 IO库

IO类

C++中提供了三个IO相关的头文件:
iostream : 标准输入输出
fstream : 文件输入输出
sstream : 字符串输入输出

标准输入输出主要由两个流对象实现

  1. istream:处理输入,有衍生类ifstreamistringstream
  2. ostream:处理输出,有衍生类ofstreamostringstream

因此不管流对象是从控制台、文件或是string中读取,都可以用重载过的运算符<<>>读取


IO对象无拷贝赋值

流对象无法赋值和拷贝,只能通过引用传递参数,例如下面的语句就会报错,函数已删除


	ofstream out1, out2;
    out1 = out2;//通过删除拷贝赋值构造函数禁止流对象赋值
    ofstream out(out1);//通过删除拷贝构造函数禁止初始化
   //不能对流对象赋值、初始化以及拷贝,只能引用传递参数。

条件状态

流对象在出错的时候会将条件状态改变,常见的有 badbit, eofbit 等,通过这些标志位可以控制常见输入输出流中的异常

	cin.rdstate();//返回标志位
 	cin.good();//判断流对象是否正常
	cin.clear();//清除所有错误标志位,恢复流对象状态

输出缓冲
	cout << endl;		//完成换行并且刷新缓存区,ends也会刷新缓存区
	cout << flush;		//flush副作用地刷新缓存区
	cout << unitbuf; 	//强制每次操作刷新缓存区

输入流读取数据时,关联的输出流也会刷新,比如 cincout


文件IO

	string s1, s2;
	s1 = "...";
	s2 = "...";//导入文件路径
	fstream f1(s1,ifstream::in);//只读
	fstream f2(s2,ofstream::out);//只写
	//或者说明输入输出对象
	ifstream f3(s1);
	ofstream f4(s2);
	//或者先默认初始化再赋值
	ifstream f5;
	f5.open(s1);
	f5.close(s1);

文件模式

常用的有以下几种

in只读
out只写
app写操作时定位到末端
ate打开文件直接定位到文件末端

string流

	string s1;
	stringstream strm;
	ostringstream ostrm;
	istringstream istrm(s1);//string 绑定到输入流中
	istrm >> s1;
	ostrm << s1;
	cout << ostrm.str() << istrm.str();//返回流中保存的拷贝

ostream 可以用来逐步检验输出是否正确,最后一起打印,还可以将其他类型转换为string

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值