请教各位,如果我要对一个文件进行字符串替换,先从该文件读入字符串,替换以后再写入。现在我想知道是否可以将该文件的所有字符串一次读入一个字符串(char[])中(用CFile::Read读),如果可以,应该用多大的数组才能确保能容纳所有字符串?或者有其他一次读入所有字符串的办法?
如果不能一次读入,则是否要将该文件复制到一个中间变量或文件里再处理?是否有比较可行的办法。
谢谢!

解决方案 »

  1.   

    virtual ULONGLONG GetLength( ) const;
      

  2.   

    CFile::GetStatus或GetLength得到长度
    char * pBuffer = new char [长度 + 1];
    //buffer清零
    //读入
      

  3.   

    CFile SourceFile;
    if(!SourceFile.Open(strPath, CFile::modeRead)) return 0;
    char *lpBuffer=new char[SourceFile.GetLength()];
    SourceFile.Read(lpBuffer, SourceFile.GetLength());
    CString str  = lpBuffer;
    str = str.Left(SourceFile.GetLength());
    SourceFile.Close();
    delete lpBuffer;
      

  4.   

    谢谢各位的热心。
    这种一次读入的方法会不会由于文件太大而出问题?to shawnwan() :能否说详细些,如何读入字符串的同时由写入字符串?替换的字符串不是一样长度的。
      

  5.   

    你一个文件能有多大?再大也大不过你内存的一个零头吧
    str值就是所有字符,str.replace()一下就行 然后重新打开文件 这次打开记得返回长度为0 重新写入就可以了