现在有数据如:  1385.0  8023.5   1  38.0 GLAM
 'EB01/J19            '  4328    14 -180.00   21.000  
 'EB01/J20S           '  4338  2195    0.00   10.000  
 'EB01/J20P           '  7140  2195 -180.00   -6.000 /
  1386.0  8023.5   1  38.0 GLAM
 'EB01/J19            '  4328    14 -180.00   21.000  
 'EB01/J20S           '  4338  2195    0.00   10.000  
 'EB01/J20P           '  7140  2195 -180.00   -6.000 /  1387.0  8023.5   1  38.0 GLAM
 'EB01/J19            '  4328    14 -180.00   21.000  
 'EB01/J20S           '  4338  2195    0.00   10.000  
 'EB01/J20P           '  7140  2195 -180.00   -6.000 /
每段的数据的格式都与上相同,此数据已经在文件中现在如果1386.0段的数据有修改,
 1386.0  8023.5   1  38.0 GLAM
 'EB01/J19            '  4328    14 -180.00   21.000  
 'EB01/J20S           '  4338  2195    0.00   10.000 
 'EB01/J20S           '  4338  2195    0.00   10.000 
 'EB01/J19            '  4328    14 -180.00   21.000 
 'EB01/J20P           '  7140  2195 -180.00   -6.000
 'EB01/J20P           '  7140  2195 -180.00   -6.000 /请问如何修改?可以使用序列化吗?如果可以问该怎么做?

解决方案 »

  1.   

    其实,可以不用序列化。直接用CStdioFile类打开文件,在找到修改的位置并保存此位置为pos,读入要修改的行,修改后(在内存中),在用Seek定位到pos,最后写入修改后的行。大概如下:
    CStdioFile file( _T("F:\\Y\\Test\\CFILE\\file.txt"), CFile::modeReadWrite); 
    TCHAR str[100];
    int pos;
    pos = file.GetPosition();
     file.ReadString(str, 100);
    ::CharUpperBuff(str, lstrlen(str));
    file.Seek(pos, CFile::begin);
    file.WriteString(str);
    还可以用流(fstream)的方式解决。