在 CentOS 环境里写 C++ 程序时,文件读写通常是最早会碰到的基础能力之一。很多人知道要用 <fstream>,但真正上手时,常见问题往往集中在“文件怎么打开”“失败时怎么判断”“读完写完要不要手动关闭”这些细节上。下面就用一个最小可运行示例,把写入、读取、编译运行和关键注意点一次讲清楚。
用 <fstream> 完成最基础的文件读写
在 CentOS 里,C++ 的文本文件读写主要依赖标准库中的 <fstream>。下面这段代码同时演示了写入文件和读取文件两个过程,适合作为入门模板直接使用。
#include <iostream>
#include <fstream>
#include <string>
int main() {
// 写入文件
std::ofstream outFile("example.txt");
if (!outFile.is_open()) {
std::cerr << "无法打开文件进行写入" << std::endl;
return 1;
}
outFile << "Hello, CentOS!" << std::endl;
outFile << "这是一个简单的 C++ 文件读写示例。" << std::endl;
outFile.close();
// 读取文件
std::ifstream inFile("example.txt");
if (!inFile.is_open()) {
std::cerr << "无法打开文件进行读取" << std::endl;
return 1;
}
std::string line;
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
inFile.close();
return 0;
}
这段程序的逻辑很直接:先把两行文本写入 example.txt,再把这个文件按行读出来,并输出到终端。
在 CentOS 上编译并运行示例
如果你只是想先把流程跑通,可以按下面的顺序操作:
- 把代码保存为
file_io.cpp。 - 打开终端,切换到文件所在目录。
- 使用
g++编译程序:
g++ -o file_io file_io.cpp
- 编译完成后执行程序:
./file_io
正常情况下,终端会输出刚才写入文件的两行内容。这也说明两件事都已经成功完成:文件写入成功,文件读取也成功。
写入文件时要关注什么
std::ofstream 用于输出到文件。示例里这句代码:
std::ofstream outFile("example.txt");
会尝试打开 example.txt 进行写入;如果文件不存在,通常会自动创建。
先检查是否成功打开
很多入门示例会直接写内容,但实际使用时,先判断 is_open() 很重要:
if (!outFile.is_open())
一旦文件因为权限、路径或目录不存在等原因打不开,程序就能及时报错,而不是把问题拖到后面才发现。
写完后显式关闭文件
示例使用 << 把内容写入文件,再调用 close():
outFile.close();
虽然程序结束时析构函数也会关闭文件,但显式关闭依然是个值得保留的习惯。尤其是在稍大的程序里,尽早释放文件句柄、明确资源生命周期,通常比“等程序退出自动处理”更稳妥。
读取文件时为什么推荐逐行处理
读取部分使用的是 std::ifstream。打开文件后,程序同样先判断文件是否成功打开,然后通过 std::getline 一行一行读取内容:

while (std::getline(inFile, line))
这种写法的优点有两个:
- 逻辑直观,适合处理普通文本文件。
- 不需要一次把整个文件读进内存,对大文件更友好。
如果你的目标是读取日志、配置文件或按行格式存储的数据,这种方式通常就已经够用了。
这个示例适合拿来做什么起点
这套写法在 CentOS 上很常见,也基本符合 C++ 标准库一贯的跨平台使用方式。换到其他 Linux 发行版时,代码通常不需要改动,直接可以继续使用。
如果你已经掌握了这一步,后续再往下扩展时,方向通常包括:
- 处理二进制文件读写;
- 指定不同的打开模式;
- 进行随机读写;
- 补充更完整的错误处理。
从入门角度看,先把这份文本文件读写示例跑通,比一开始就上复杂封装更实际。只要理解了“打开文件、检查状态、执行读写、关闭文件”这条主线,后面的大多数文件操作都能在这个基础上展开。









