Serializing ASCII Data |
|
Home
|
Serializing Data to / from an ASCII-fileThe CArchive object has methods called ReadString and WriteString. ReadString reads a complete line stopping at, but not including the carriagereturn/linefeed pair. WriteString puts the specified string value into the archive, but without the CR/LF. ReadString detects eof by a returning zero which can be used as while-conditional. This is from the sample application, step zero: void CInterfaceDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
for (int i=0; i<m_String.GetUpperBound(); i++)
ar.WriteString(m_Strings[i]+"\n");
}
else
{
m_Strings.RemoveAll();
int idx=0;
CString t;
TRY
{
while(ar.ReadString(t))
{
m_Strings.SetAtGrow(idx, t);
idx++;
}
}
CATCH(CArchiveException, e)
{
#ifdef _DEBUG
TCHAR szCause[255];
CString strFormatted;
e->GetErrorMessage(szCause, 255);
// in real life, it's probably more
// appropriate to read this from
// a string resource so it would be easy to
// localize
strFormatted = _T("CArciveException: ");
strFormatted += szCause;
AfxMessageBox(strFormatted);
#endif //_DEBUG
}
END_CATCH;
UpdateAllViews(NULL);
}
}
|