首页 > 其他分享 >第八章 IO库

第八章 IO库

时间:2023-02-10 22:11:46浏览次数:35  
标签:文件 IO fstream fstrm 第八章 strm string

第八章 IO库

前面章节已经在用的IO库设施

  • istream:输入流类型,提供输入操作。
  • ostream:输出流类型,提供输出操作
  • cin:一个istream对象,从标准输入读取数据。
  • cout:一个ostream对象,向标准输出写入数据。
  • cerr:一个ostream对象,向标准错误写入消息。
  • >>运算符:用来从一个istream对象中读取输入数据。
  • <<运算符:用来向一个ostream对象中写入输出数据。
  • getline函数:从一个给定的istream对象中读取一行数据,存入到一个给定的string对象中。

IO类

标准库定义的IO类型

  • iostream头文件:从标准流中读写数据,istreamostream等。
  • fstream头文件:从文件中读写数据,ifstreamofstream等。
  • sstream头文件:从字符串中读写数据,istringstreamostringstream

IO对象不可复制或赋值

  • 1.IO对象不能存在容器里.
  • 2.形参和返回类型也不能是流类型。
  • 3.形参和返回类型一般是流的引用
  • 4.读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。

条件状态

状态 解释
strm:iostate 是一种机器无关的类型,提供了表达条件状态的完整功能
strm:badbit 用来指出流已经崩溃
strm:failbit 用来指出一个IO操作失败了
strm:eofbit 用来指出流到达了文件结束
strm:goodbit 用来指出流未处于错误状态,此值保证为零
s.eof() 若流seofbit置位,则返回true
s.fail() 若流sfailbit置位,则返回true
s.bad() 若流sbadbit置位,则返回true
s.good() 若流s处于有效状态,则返回true
s.clear() 将流s中所有条件状态位复位,将流的状态设置成有效,返回void
s.clear(flags) 将流s中指定的条件状态位复位,返回void
s.setstate(flags) 根据给定的标志位,将流s中对应的条件状态位置位,返回void
s.rdstate() 返回流s的当前条件状态,返回值类型为strm::iostate

上表中,strm是一种IO类型,(如istream), s是一个流对象。

管理输出缓冲

  • 每个输出流都管理一个缓冲区,执行输出的代码,文本串可能立即打印出来,也可能被操作系统保存在缓冲区内,随后再打印。
  • 刷新缓冲区,可以使用如下IO操纵符:
    • endl:输出一个换行符并刷新缓冲区。
    • flush:刷新流,单不添加任何字符。
    • ends:在缓冲区插入空字符null,然后刷新。
    • unitbuf:告诉流接下来每次操作之后都要进行一次flush操作。
    • nounitbuf:回到正常的缓冲方式。

文件输入输出

  • 头文件fstream定义了三个类型来支持文件IO:
    • ifstream从一个给定文件读取数据。
    • ofstream向一个给定文件写入数据。
    • fstream可以读写给定文件。
  • 文件流:需要读写文件时,必须定义自己的文件流对象,并绑定在需要的文件上。

fstream特有的操作

操作 解释
fstream fstrm; 创建一个未绑定的文件流。
fstream fstrm(s); 创建一个文件流,并打开名为s的文件,s可以是string也可以是char指针
fstream fstrm(s, mode); 与前一个构造函数类似,但按指定mode打开文件
fstrm.open(s) 打开名为s的文件,并和fstrm绑定
fstrm.close() 关闭和fstrm绑定的文件
fstrm.is_open() 返回一个bool值,指出与fstrm关联的文件是否成功打开且尚未关闭

上表中,fstream是头文件fstream中定义的一个类型,fstrm是一个文件流对象。

文件模式

文件模式 解释
in 以读的方式打开
out 以写的方式打开
app 每次写操作前均定位到文件末尾
ate 打开文件后立即定位到文件末尾
trunc 截断文件
binary 以二进制方式进行IO操作。

string流

  • 头文件sstream定义了三个类型来支持内存IO:
    • istringstreamstring读取数据。
    • ostringstreamstring写入数据。
    • stringstream可以读写给定string

stringstream特有的操作

操作 解释
sstream strm 定义一个未绑定的stringstream对象
sstream strm(s) s初始化对象
strm.str() 返回strm所保存的string的拷贝
strm.str(s) s拷贝到strm中,返回void

上表中sstream是头文件sstream中任意一个类型。s是一个string

标签:文件,IO,fstream,fstrm,第八章,strm,string
From: https://www.cnblogs.com/Epiephany/p/17110402.html

相关文章

  • 小白也能做应用(三)之fusion app远程更新及免登录
    一、前言上一篇我们完成了软件的基本功能,如果想在用户使用我们的app时,自动检测新版本并让自动完成安装,这样岂不是更好?本篇我们就来探究一下远程更新的过程,并完成实际的功......
  • project MES / Manufacturing Execution System
    s问题1:ERP系统无法解决制造业在生产过程中的问题解决1:ERP解决的是资源问题,ERP可以处理昨天、前天等对历史数据的分析,可以预计明天生产计划,无法处理当下发生的问题管理。......
  • 联邦学习论文阅读笔记04 Measure Contribution of Participants in Federated Learnin
    这篇论文提出了两种贡献测量的方法,水平FL的删除方法和垂直FL的Shapley值分组特征法。水平FL:特征相同样本不同删除方法:每次删除某一个参与者重新训练,贡献=原模型-新模型......
  • Session-based Recommendation with Graph Neural Networks
    目录概符号说明基本框架gatedGRU技术细节代码WuS.,TangY.,ZhuY.,WangL.,XieX.andTanT.Session-basedrecommendationwithgraphneuralnetworks.InAAA......
  • Android IO 框架 Okio 的实现原理,到底哪里 OK?
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。前言大家好,我是小彭。今天,我们来讨论一个Square开源的I/O框架Okio,我们最开始接触到Oki......
  • JAVA - IO流
    JavaIO流学习总结Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传......
  • oracle中的 connect by prior用法
    oracle中的connectbyprior用法https://www.pianshen.com/article/71531660615/ https://www.cnblogs.com/Smileing/p/12171338.htmlconnectbypriorhttps://blog......
  • 《Towards Cooperation in Sequential Prisoner’s Dilemmas: a Deep Multiagent Rein
    致力于序贯囚徒困境中的合作:一种多智能体深度强化学习的方法总结主要是针对复杂的序贯囚徒困境的合作提出的方法,目的是为了提高合作程度最终达到提高社会总收益的。该方......
  • Codeforces Round #472 D - Riverside Curio 差分约束
    正解据说是贪心+dp可惜我这个人没什么脑子:)(遇到了能用差分约束也能用dp+贪心的第二题了,真是神奇假设有一组合法的sum就能逆推出di,因为ai+di+1=sumi最小化Σdi就是最小......
  • 设计规范 IOS&Android系统
    设计规范 IOS&Android系统1.IOS系统设计规范2.Android系统设计规范3.设计师要如何作图?4.设计师如何做适配?​ IOS规范​ ios界面设计尺寸及栏高度​ PS 750*13......