fstream的自实现
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <fstream>
class Stream
{
public:
Stream(char* path = NULL, char* mode = NULL)
{
//为实现open功能,创建对象时没有初值直接返回,避免fopen参数为NULL出错
if (path == NULL || mode == NULL)
return;
_fp = fopen(path, mode);
if (_fp == NULL)
cout << "open error!" << endl;
}
void open(char* path, char* mode)
{
_fp = fopen(path, mode);
}
void put(char ch)
{
fputc(ch, _fp);
}
void close()
{
fclose(_fp);
_fp = NULL;
}
~Stream()
{
if (_fp != NULL)
fclose(_fp);
}
private:
FILE* _fp;
};
int _tmain(int argc, _TCHAR* argv[])
{
//fstream ifs("aa.txt", ios::in | ios::out | ios::trunc); //fopen("aa.txt",rw);
//if (!ifs) //对 !符号进行重载 判断是否成功
// cout << "open error!" << endl;
fstream ifs;
ifs.open("aa.txt", ios::in | ios::out | ios::trunc);
ifs.put('a');
ifs.put('b');
ifs.close();
cout << "================================" << endl;
//Stream s("cc.txt", "w+");
Stream s;
s.open("cc.txt", "w+");
s.put('a');
s.put('b');
s.put('c');
s.put('d');
s.close();
return 0;
}