使用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];
}
}
}
{
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];
}
}
}
声明数组时,其维数必须是常量,可以为
#define M 4
enum {m = 4;};
const int m = 4;
{
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);
}
}
先保存,然后打开。
如果打开没有信息。
则关掉程序,直接打开。原理就是怎么保存就怎么读,如果是保存一个结构体。
那就读一个结构体。