飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1995|回复: 1

[C/C++] 文件及文件操作

[复制链接]

该用户从未签到

发表于 2010-2-4 00:50:47 | 显示全部楼层 |阅读模式
#include <iOStream.h>

class File;

class FileRef
{
public:
        class File& m_file;
        unsigned long m_nIndex;
        char m_c;
public:
        FileRef(File& fp,unsigned long nIndex)
                :m_file(fp),m_nIndex(nIndex)
        {
        }
        FileRef& operator=(char c);
        operator char ();
};


class File
{
        friend class FileRef;
public:
        FILE * m_fp;
public:
        File(const char * szFileName)
        {
                m_fp = fopen(szFileName,"w+");
        }
        ~File()
        {
                if (m_fp)
                {
                        fclose(m_fp);
                        m_fp = NULL;
                }
        }
        FileRef operator[](unsigned long nIndex)
        {
                return FileRef(*this,nIndex);
        }
};       

FileRef& FileRef::operator=(char c)
{
        fseek(m_file.m_fp,m_nIndex,SEEK_CUR        );
        fwrite(&c,sizeof(char),1,m_file.m_fp);
        return *this;
}

FileRef::operator char()
{
        fseek(m_file.m_fp,m_nIndex,0);
        fread(&m_c,sizeof(char),1,m_file.m_fp);
        return m_c;
}

int main(int argc, char* argv[])
{
        File fp("temp.txt");
        fp[5] = 'A';
        char cc = fp[5];
        cout<< cc << endl;
        return 0;
}
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2010-2-4 00:51:25 | 显示全部楼层
源于课件的一段代码 太恶了 ~~
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表