小于64K的可以用CString解决,但是大于64K的话虽然可以用CFile::ReadHuge读出来却没有好办法进行处理。CFile也没有ReadLine之类的函数可以逐行读取,强行限定Read长度的话又怕将要替换的字符串切开了。
有什么好一点方便一点的办法?

解决方案 »

  1.   

    非得用VC吗? 用perl的话,1G 的数据一条语句就够了
      

  2.   

    你是不想自己编写吗?
    1.分配一块内存空间,使用Gloable分配API可>64k
    2.把你的文件读其中
    3.自己编程完成替换
      

  3.   

    CString可以存储大于64k的数据,我就用过256k的,就是操作起来特别慢。
    要想快,还要直接操作内存
      

  4.   

    这种东西最好用FileMappingHANDLE hFile = CreateFile(....);//打开文件HANDLE hFileMap = CreateFileMapping(...);//建立文件映射LPSTR lpStr = (LPSTR)MapViewOfFile(hFileMpa,...);//将文件映射装入本程序的地址空间然后可以象操作字符串一样对这个文件进行操作,系统自动为你管理内存的。用起来非常方便。
    完成后不要忘了把文件映射从地址空间中移除(UnmapViewOfFile),还要关闭文件和文件映射(CloseHandle)。
      

  5.   

    使用yndfcd(YNDFCD)很好的,你是不是不想自己编写寻找替换功能,想使用已有的吗?
    程序员不要怕麻烦.
      

  6.   

    可以分段读呀,用CFile.
    FileLen = cfile.GetLength();
    while(cfile.GetPosition()<FileLen)
    {
    memset(pText,0,1025);
    cfile.Read(pText,1024);

    }
    cfile.Close();不过分段读可能会产生半个汉字的问题。