- UID
 - 2198
 
 注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主 
    
 
 
 
该用户从未签到  
 | 
 
#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; 
} |   
 
 
 
 |