C++ 文件和流

· 约 12 分钟读完 · 第 32 / 43 章

在本章中,我们将详细探讨如何使用 C++ 处理文件和输入输出流。C++ 提供了强大的标准库支持,使得文件操作变得简单而高效。

文件流概述

文件流是 C++ 中用于读写文件的类。主要的文件流类包括 std::ifstream、std::ofstream 和 std::fstream。这些类分别用于文件的输入、输出和双向操作。

std::ifstream 类

std::ifstream 类用于从文件中读取数据。它继承自 std::istream 类。

创建文件流对象

读取文件内容

std::ofstream 类

std::ofstream 类用于向文件写入数据。它继承自 std::ostream 类。

创建文件流对象

向文件写入数据

std::fstream 类

std::fstream 类用于同时进行文件的读写操作。它继承自 std::iostream 类。

创建文件流对象

文件的读写操作

文件流操作符重载

C++ 的文件流类提供了许多操作符重载,使得文件操作更加方便。

读取和写入基本类型

文件流可以自动处理基本类型的读写操作,如整型、浮点型等。

使用 getline 读取字符串

getline 函数可以从文件流中读取一行文本,并将其存储在一个字符串变量中。

文件模式

C++ 文件流提供了多种打开文件的模式,通过组合这些模式,可以灵活地控制文件的操作行为。

文件打开模式

  • std::ios::in: 仅用于读取。
  • std::ios::out: 仅用于写入。
  • std::ios::app: 在文件末尾追加内容。
  • std::ios::ate: 打开文件后立即定位到文件末尾。
  • std::ios::trunc: 如果文件已存在,则删除其内容。
  • std::ios::binary: 以二进制模式打开文件。

示例:组合模式

错误处理

文件操作可能由于各种原因失败,因此需要妥善处理错误情况。

检查文件打开状态

可以通过检查文件流的状态标志来判断文件操作是否成功。

清除状态标志

在某些情况下,可能需要清除文件流的状态标志,以便继续操作。

文件缓冲

C++ 文件流默认使用缓冲机制,以提高性能。可以手动控制缓冲行为,例如刷新缓冲区。

刷新缓冲区

禁用缓冲

可以通过设置文件流为无缓冲模式来禁用缓冲。

总结

本章介绍了 C++ 中文件和流的基本概念及操作方法。通过学习这些内容,你将能够有效地处理文件输入输出任务,从而增强你的程序功能。下一部分我们将探讨更高级的文件操作技术,包括内存映射文件和多线程文件访问等主题。