首页 > 编程笔记 > C++笔记 阅读:2

C++ ifstream和ofstream读写文件(附带实例)

对文件进行操作时,最常见的就是读写文件。例如,使用程序查看文件内容时,首先要读取文件;修改文件内容时,需要向文件中写入数据。

C++ 中的文件流分为 3 类,即输入流、输出流和输入/输出流,相应地,必须将流声明为 ifstream、ofstream 和 fstream 类的对象:
ifstream ifile;    // 声明一个输入流
ofstream ofile;    // 声明一个输出流
fstream iofile;    // 声明一个输入/输出流
声明了流对象之后,可以使用 open() 函数打开文件。打开文件就是在流与文件之间建立一个连接。

ofstream 类和 ifstream 类中有很多用于磁盘文件管理的成员函数。

表:ifstream/ofstream 常用成员方法
成员方法名 适用类对象 功   能
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/

相关文章