C++精进之路(十七)输入,输出和文件

流是进出程序的字节流。缓冲区是内存中的临时存储区域,是程序与文件或其他I/ O设备之间的桥梁。 信息在缓冲区和文件之间传输时,将使用设备(如磁盘驱动器)处理效率最高的尺寸以大块数据的方式进 行传输。信息在缓冲区和程序之间传输时,是逐字节传输的,这种方式对于程序中的处理操作更为方便。 C++通过将一个被缓冲流同程序及其输入源相连来处理输入。同样,C++也通过将一个被缓冲流与程序及 其输出目标相连来处理输出。iostream 和fstream 文件构成了I O 类库,该类库定义了大量用于管理流的类。 包含了iostream 文件的C++程序将自动打开8 个流,并使用8 个对象管理它们 。cin对象管理标准输入流, 后者默认与标准输入设备(通常为键盘)相连;cout 对象管理标准输出流,后者默认与标准输出设备(通 常为显示器)相连;cerr 和cl og 对象管理与标准错误设备 (通常为显示器)相连的未被缓冲的流和被缓冲 的流。这4 个对象有都有用于宽字符的副本,它们是wcin、wcout、wcerr 和wclog。
I/O 类库提供了大量有用的方法。istream 类定义了多个版本的抽取运算符 (>>),用于识别所有基本的 C++类型,并将字符输入转换为这些类型。get ()方法族和getline()方法为单字符输入和字符串输入提供了 进一步的支持。同样 ,ostream类定义了多个版本的插入运算符(<<),用于识别所有的C++基本类型,并 将它们转换为相应的字符输出。put()方法对单字符输出提供了进一步的支持。wistream 和wostream 类 对宽字符提 供 了类似的 支持。
使用ios_base 类方法以及文件iostream和i omanip中定义的控制符(可与插入运算符拼接的函数),可 以控制程序如何格式化输出。这些方法和控制符使得能够控制计数系统、字段宽度、小数位数、显示浮点 变量时采用的计数系统 以及其他元素。
fstream 文件提供了将iostream方法扩展到文件1/O的类定义。ifstream类是从istream类派生而来的。 通过将ifstream对象与文件关联起来,可以使用所有的istream 方法来读取文件 。同样,通过将ofstream对 象与文件关联起来,可以使用ostream 方法来写文件:通过将fstream 对象与文件关联起来,可以将输入和 输出方法用 于文件。 要将文件与流关联起来,可以在初始化文件流对象时提供文件名,也可以先创建一个文件流对象,然 后用open()方法将这个流与文件关联起来。close()方法终止流与文件之间的连接。类构造函数和open() 方 法 接 受 可 选 的 第 二 个 参 数 , 该 参 数 提 供 文 件 模 式 。 文 件 模 式 决 定 文 件 是 否 被 读 和 / 或 写 、打 开 文 件 以便 写 入时是否截短文件、试图打开不存在的文件时是否会导致错误、是使用二进制模式还是文本模式等。 文本文件以字符格式存储所有的信息,例如,数字值将被转换为字符表示。常规的插入和抽取运算符 以 及 g e t ()和 g e t l i n e ()都 支 持 这 种 模 式 。 二 进 制 文 件 使 用 计 算 机 内 部 使 用 的 二 进 制 表 示 来 存 储 信 息 。 与 文 本 文件相比, 二进制文件存储数据(尤其是浮点值)更 精确、简洁,但可移植性较差。read()和write()方法都支持二进制输入和输出。
seekg()和seekp()函数提供对文件的随机存取 。这些类方法使得能够将文件指针放置到相对于文件开 头、文件尾和当前位置的某个位置。tellg()和tellp()方法报告当前的文件位置。 sstream头文件定义了istringstream和ostringstream 类,这些类使得能够使用istream和ostream 方法来抽取字符串中的信息,并对要放入字符串中的信息进行格式化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值