前面的章节中,我们所有的输入输出都是通过控制台完成的——用cin读取用户输入,用cout把结果打印到屏幕上。但实际开发中,数据往往存储在文件里:配置文件、日志文件、数据记录等等。学会用 C++ 读写文件,是从「写练习题」迈向「写实用程序」的关键一步。1. 文件流的基本概念C++ 的文件操作通过文件流(file stream)来实现,相关的头文件是fstream。文件流有三种类型:类型用途类比控制台ifstream读取文件(输入文件流)类似cinofstream写入文件(输出文件流)类似coutfstream既能读也能写同时具备cin和cout的能力使用文件流的基本流程是:打开文件 → 读写操作 → 关闭文件。2. 写入文件2.1 基本写入使用ofstream创建一个输出文件流,就可以像使用cout一样往文件中写入内容:#includeiostream#includefstreamusingnamespacestd;intmain(){ofstreamoutFile("hello.txt");// 创建/打开文件if(!outFile){cerr"无法打开文件!"endl;return1;}outFile"Hello, File!"endl;outFile"这是第二行。"endl;outFile"数字:"42endl;outFile.close();// 关闭文件cout"写入完成!"endl;return0;}运行后你会在当前目录下看到一个hello.txt文件,内容就是我们写入的三行文字。几个要点:ofstream构造函数接收文件名参数,如果文件不存在会自动创建如果文件已存在,默认会覆盖原有内容使用close()关闭文件是好习惯,虽然析构函数会自动关闭2.2 追加模式如果你不想覆盖文件原有内容,而是想在末尾追加,使用ios::app模式:ofstreamoutFile("log.txt",ios::app);// 追加模式outFile"新的一条记录"endl;outFile.close();每次运行程序,新的一行都会追加到文件末尾,而不是覆盖之前的内容。这在写日志文件时非常有用。3. 读取文件3.1 逐行读取使用ifstream打开文件后,可以用getline()逐行读取内容:
【C++】零基础入门 · 第 11 节:文件读写(fstream)
发布时间:2026/5/28 22:01:00
前面的章节中,我们所有的输入输出都是通过控制台完成的——用cin读取用户输入,用cout把结果打印到屏幕上。但实际开发中,数据往往存储在文件里:配置文件、日志文件、数据记录等等。学会用 C++ 读写文件,是从「写练习题」迈向「写实用程序」的关键一步。1. 文件流的基本概念C++ 的文件操作通过文件流(file stream)来实现,相关的头文件是fstream。文件流有三种类型:类型用途类比控制台ifstream读取文件(输入文件流)类似cinofstream写入文件(输出文件流)类似coutfstream既能读也能写同时具备cin和cout的能力使用文件流的基本流程是:打开文件 → 读写操作 → 关闭文件。2. 写入文件2.1 基本写入使用ofstream创建一个输出文件流,就可以像使用cout一样往文件中写入内容:#includeiostream#includefstreamusingnamespacestd;intmain(){ofstreamoutFile("hello.txt");// 创建/打开文件if(!outFile){cerr"无法打开文件!"endl;return1;}outFile"Hello, File!"endl;outFile"这是第二行。"endl;outFile"数字:"42endl;outFile.close();// 关闭文件cout"写入完成!"endl;return0;}运行后你会在当前目录下看到一个hello.txt文件,内容就是我们写入的三行文字。几个要点:ofstream构造函数接收文件名参数,如果文件不存在会自动创建如果文件已存在,默认会覆盖原有内容使用close()关闭文件是好习惯,虽然析构函数会自动关闭2.2 追加模式如果你不想覆盖文件原有内容,而是想在末尾追加,使用ios::app模式:ofstreamoutFile("log.txt",ios::app);// 追加模式outFile"新的一条记录"endl;outFile.close();每次运行程序,新的一行都会追加到文件末尾,而不是覆盖之前的内容。这在写日志文件时非常有用。3. 读取文件3.1 逐行读取使用ifstream打开文件后,可以用getline()逐行读取内容: