使用MFC的序列化功能void CMyDocument::Serialize(CArchive& ar)
{
   if (ar.IsStoring)
   {
      ar << m_nArraySize;      for (int row = 0; row < m_nArraySize; ++row )
        for (int col = 0; col < 2; ++ col)
        {
           ar << m_array[row][col];
        }  
   }
   else
  {
    ar >> m_nArraySize;    m_array = new int[nArraySize][2];
    for (int row = 0; row < m_nArraySize; ++row )
      for (int col = 0; col < 2; ++ col)
     {
       ar >> m_array[row][col];
     }
  }
}

解决方案 »

  1.   

    m_array[m_n]
    声明数组时,其维数必须是常量,可以为
    #define M 4
    enum {m = 4;};
    const int m = 4;
      

  2.   

    void CTestDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    m_nArraySize = 4;
    memset( m_array,0,sizeof(m_array) );

    m_array[0][0] = 1 ;
    m_array[0][1] = 2;
    m_array[1][0] = 2 ;
    m_array[1][1] = 3;
    m_array[2][0] = 2 ;
    m_array[2][1] = 5;
    m_array[3][0] = 4 ;
    m_array[3][1] = 5;

    ar << m_nArraySize;

            for (int row = 0; row < m_nArraySize; ++row )
    for (int col = 0; col < 2; ++ col)
    {
    ar << m_array[row][col];
    }  

    }
    else
    {
    m_nArraySize = 0;
    ar >> m_nArraySize; if ( 1024 < m_nArraySize ){
    AfxMessageBox("array size is so large!");
    return ;
    }

    memset( m_array,0,sizeof(m_array) );

    for (int row = 0; row < m_nArraySize; ++row )
    for (int col = 0; col < 2; ++ col)
    {
    ar >> m_array[row][col];
    }
    char buffer[256];
    CString str;

    for( int j=0;j<m_nArraySize;j++){
    memset(buffer,0 ,sizeof(buffer) );
    sprintf(buffer,"%d,%d\r\n", m_array[j][0], m_array[j][1] );
    str+=CString(buffer);
    }
    memset(buffer,0 ,sizeof(buffer) );
    sprintf(buffer,"%s",str);
    AfxMessageBox(buffer);
    }


    }
    先保存,然后打开。
    如果打开没有信息。
    则关掉程序,直接打开。原理就是怎么保存就怎么读,如果是保存一个结构体。
    那就读一个结构体。