C++ ifstream和ofstream读写文件(附带实例)
对文件进行操作时,最常见的就是读写文件。例如,使用程序查看文件内容时,首先要读取文件;修改文件内容时,需要向文件中写入数据。
C++ 中的文件流分为 3 类,即输入流、输出流和输入/输出流,相应地,必须将流声明为 ifstream、ofstream 和 fstream 类的对象:
ofstream 类和 ifstream 类中有很多用于磁盘文件管理的成员函数。
【实例】文件的读写应用。使用 ifstream 和 ofstream 对象实现文件的读写功能。具体代码如下:
程序的执行结果为:
C++ 中的文件流分为 3 类,即输入流、输出流和输入/输出流,相应地,必须将流声明为 ifstream、ofstream 和 fstream 类的对象:
ifstream ifile; // 声明一个输入流 ofstream ofile; // 声明一个输出流 fstream iofile; // 声明一个输入/输出流声明了流对象之后,可以使用 open() 函数打开文件。打开文件就是在流与文件之间建立一个连接。
ofstream 类和 ifstream 类中有很多用于磁盘文件管理的成员函数。
成员方法名 | 适用类对象 | 功 能 |
---|---|---|
open() |
ifstream ofstream |
打开指定文件,使其与文件流对象相关联。 |
is_open() | 检查指定文件是否已打开。 | |
close() | 关闭文件,切断和文件流对象的关联。 | |
swap() | 交换 2 个文件流对象。 | |
operator>> | ifstream | 重载 >> 运算符,用于从指定文件中读取数据。 |
gcount() | 返回上次从文件流提取出的字符个数。该函数常和 get()、getline()、ignore()、peek()、read()、readsome()、putback() 和 unget() 联用。 | |
get() | 从文件流中读取一个字符,同时该字符会从输入流中消失。 | |
getline(str,n,ch) | 从文件流中接收 n-1 个字符给 str 变量,当遇到指定 ch 字符时会停止读取,默认情况下 ch 为 '\0'。 | |
ignore(n,ch) | 从文件流中逐个提取字符,但提取出的字符被忽略,不被使用,直至提取出 n 个字符,或者当前读取的字符为 ch。 | |
peek() | 返回文件流中的第一个字符,但并不是提取该字符。 | |
putback(c) | 将字符 c 置入文件流(缓冲区)。 | |
operator<< | ofstream | 重载 << 运算符,用于向文件中写入指定数据。 |
put() | 向指定文件流中写入单个字符。 | |
write() | 向指定文件中写入字符串。 | |
tellp() | 用于获取当前文件输出流指针的位置。 | |
seekp() | 设置输出文件输出流指针的位置。 | |
flush() | 刷新文件输出流缓冲区。 | |
good() |
ofstream ifstream |
操作成功,没有发生任何错误。 |
eof() | 到达输入末尾或文件尾。 |
【实例】文件的读写应用。使用 ifstream 和 ofstream 对象实现文件的读写功能。具体代码如下:
#include <iostream> #include <fstream> #include <cstring> using namespace std; int main() { char buf[128]; ofstream ofile("test.txt"); for(int i=0;i<5;i++) { memset(buf,0,128); cin >> buf; ofile << buf; } ofile.close(); ifstream ifile("test.txt"); while(!ifile.eof()) { char ch; ifile.get(ch); if(!ifile.eof()) cout << ch; } cout << endl; ifile.close(); return 0; }程序中,首先使用 ofstream 类创建并打开 test.txt 文件,然后输入 5 次数据,程序把 5 次输入的数据全部写入 test.txt 文件。关闭 ofstream 类打开的文件,用 ifstream 类打开文件,将文件中的内容读出。
程序的执行结果为:
https://
c
.biancheng
.net
/c/
https://c.biancheng.net/c/