问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C++ 开发基础之 ofstream 和 ifstream 文件操作核心用法

创作时间:
作者:
@小白创作中心

C++ 开发基础之 ofstream 和 ifstream 文件操作核心用法

引用
CSDN
1.
https://blog.csdn.net/houbincarson/article/details/141021385

1. 引言

文件操作是大多数程序的基本需求之一。在 C++ 中,ofstreamifstream 是进行文件输入输出操作的核心类。ofstream 用于文件写入,而 ifstream 用于文件读取。掌握这两个类的使用方法对于进行文件操作至关重要。本文将详细介绍这两个类的基本用法以及一些高级技巧。

2. ofstream:文件写入

2.1 引入头文件

在使用 ofstream 之前,需要包含 <fstream> 头文件:

#include <fstream>

2.2 创建 ofstream 对象

可以通过构造函数创建 ofstream 对象并打开文件:

std::ofstream file("example.txt");

如果文件 example.txt 不存在,ofstream 会自动创建它。如果文件已经存在,默认情况下文件内容将被覆盖。

2.3 打开和关闭文件

除了在创建对象时指定文件名,还可以在创建后使用 open 方法打开文件:

std::ofstream file;
file.open("example.txt");
// 使用文件
file << "Hello, world!" << std::endl;
// 关闭文件
file.close();

关闭文件是良好的编程习惯,可以确保所有数据都被写入磁盘并释放资源。

2.4 文件模式

ofstream 支持多种文件模式,控制文件的打开方式:

  • std::ios::app:以追加模式打开文件,每次写入都会追加到文件末尾。
  • std::ios::trunc:以截断模式打开文件,打开时清空文件内容。
  • std::ios::binary:以二进制模式打开文件,按字节写入数据。

示例:

std::ofstream file("example.txt", std::ios::app); // 以追加模式打开文件
file << "Appending new content." << std::endl;
file.close();

2.5 写入数据

使用 ofstream 写入数据非常简单,可以使用流插入运算符 (<<) 将数据写入文件:

std::ofstream file("example.txt");
file << "Hello, world!" << std::endl;
file << 123 << std::endl;
file << 45.67 << std::endl;
file.close();

也可以写入 C 风格的字符串:

std::ofstream file("example.txt");
const char* str = "Hello, C++!";
file << str << std::endl;
file.close();

2.6 检查文件状态

为了确保文件操作成功,可以检查文件的状态:

std::ofstream file("example.txt");
if (!file) {
    std::cerr << "Error opening file!" << std::endl;
    return 1;
}
// 使用文件
file << "Hello, world!" << std::endl;
file.close();

3. ifstream:文件读取

3.1 引入头文件

ofstream 类似,在使用 ifstream 时,也需要包含 <fstream> 头文件:

#include <fstream>

3.2 创建 ifstream 对象

创建 ifstream 对象并打开文件进行读取:

std::ifstream file("example.txt");

3.3 打开和关闭文件

ofstream 类似,可以在创建对象后使用 open 方法打开文件:

std::ifstream file;
file.open("example.txt");
// 读取文件内容
std::string line;
while (std::getline(file, line)) {
    std::cout << line << std::endl;
}
// 关闭文件
file.close();

3.4 文件模式

ifstream 也可以指定文件模式,如 std::ios::binary,用于以二进制模式读取数据:

std::ifstream file("example.bin", std::ios::binary);

3.5 读取数据

读取文件数据时,可以使用流提取运算符 (>>) 或逐行读取:

std::ifstream file("example.txt");
int number;
file >> number;
std::cout << "Number: " << number << std::endl;
file.close();

逐行读取:

std::ifstream file("example.txt");
std::string line;
while (std::getline(file, line)) {
    std::cout << line << std::endl;
}
file.close();

3.6 检查文件状态

同样,检查文件状态可以确保读取操作成功:

std::ifstream file("example.txt");
if (!file) {
    std::cerr << "Error opening file!" << std::endl;
    return 1;
}
// 读取文件
std::string line;
while (std::getline(file, line)) {
    std::cout << line << std::endl;
}
file.close();

4. 处理异常

在处理文件时,可能会遇到各种异常情况。可以使用 exceptions 方法来处理这些异常:

std::ofstream file;
file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
try {
    file.open("example.txt");
    file << "Hello, world!" << std::endl;
} catch (const std::ios_base::failure& e) {
    std::cerr << "File operation failed: " << e.what() << std::endl;
}
file.close();

5. 总结

ofstreamifstream 是 C++ 中用于文件操作的两个基本类。ofstream 用于将数据写入文件,而 ifstream 用于从文件中读取数据。通过掌握这些类的基本用法和高级技巧,可以更高效地处理文件操作,确保程序的稳定性和可靠性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号