C++ 读写操作同一个文件的几种方法

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    // 打开文件 "test.txt" 同时读写操作
    filebuf buffer; // 建立一个 file stream 缓冲区,并将它装在两个stream对象上
    ostream output(&buffer);
    istream input(&buffer);
    buffer.open("test.txt", ios::in | ios::out | ios::trunc);

    for (int i = 1; i <=4 ; i++) {
        // 写一行数据
        output << i << ". line" <<endl;

        // 打印全部的文件内容
        input.seekg(0);  // 流设到开始处
        char c;
        while (input.get(c)) {
            cout.put(c);
        }
        cout << endl;
        input.clear();  // 清除eof 和 fail标记位
    }

    input.seekg(0);
    cout<< "把缓冲区指针传给流,输出全部内容\n" << input.rdbuf();
}

#if 0 / 以下内容为学习程序的资料,不编译 

// 建立一个 file stream 缓冲区,并将它装在两个stream对象上
filebuf buffer;
ostream output(&buffer);
istream input(&buffer);
buffer.open("test.txt", ios::in | ios::out | ios::trunc);

// 通常利用 class fstream 打开文件进行读写操作
fstream file ("test.txt", ios::in | ios::out);

// 也可以采用两个不同的 stream对象,一个用于读取,一个用于改写
ofstream out ("test.txt", ios::in | ios::out);
istream in (out.rdbuf());

// 设置stream缓冲区,重定向cout输出到文件
ofstream file ("cout.txt");
cout.rdbuf(file.rdbuf());

#endif

C++ 的流挺好玩的,今天看 C++ 流 不好的评价http://topic.csdn.net/u/20110823/20/5600d38a-e4f3-48f1-a70e-bb3119e7c8a7.html自己去看 PDF 版 C++标准程序库了摘写了这些代码,调试玩玩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值