本帖最后由 us4dmin 于 2011-09-08 17:18:24 编辑

解决方案 »

  1.   

    记录好两行的位置, 如起始位置为nPos1, 下一行位置nPos2,
      CFile f1;
      ……  while(1)
      {
    BYTE buffer[1024];
    f1.Seek(nPos2, CFile::begin);
    UINT N = f1.Read(buffer, 1024);
    f1.Seek(nPos1, CFile::begin);
    f1.Write(buffer, N);
    nPos1 += N; nPos2+=N;
    if(N<1024)
      break;
      }
      f1.SetLength(nPos1);
      f1.Close();
      

  2.   

    不想建磁盘临时文件,那么就得建内存临时文件。
    否则,在固定的内存块内,频繁移动数据,效率是不高的。
    当然,你另建一个内存数组 bool deleteline[100000],删除行标记为1,也是可以的。
      

  3.   

    如果内容不多,可以存到vector里
    删除文件行又不想创建临时文件,只能同内存来实现,别无他法
      

  4.   

    CSdtioFile 这个类能不能处理呢。
      

  5.   

    用CString类
    CStdioFile类
    具体详见http://blog.csdn.net/jax_lee/article/details/6792722