Za pomocą CArchive << i >> Operatory
CArchivezawiera << i >> podmioty gospodarcze do zapisywania i odczytywania proste typy danych oraz CObjects do i z pliku.
Do przechowywania obiektów w pliku archiwum za pośrednictwem
Poniższy przykład przedstawia sposób przechowywania obiektu w pliku archiwum za pośrednictwem:
CArchive ar(&theFile, CArchive::store); WORD wEmployeeID = 78; ar << wEmployeeID;
Aby załadować obiektu z wartość wcześniej przechowywane w pliku
Jak załadować obiektu z wartości uprzednio są przechowywane w pliku można znaleźć w poniższym przykładzie:
CArchive ar(&theFile, CArchive::load); WORD wEmployeeID; ar >> wEmployeeID;
Zazwyczaj, przechowywanie i ładowanie danych do i z pliku archiwum w za pośrednictwem Serialize funkcje CObject-klasy, które musi być zadeklarowana z pochodne DECLARE_SERIALIZE makro.Odwołanie do CArchive obiektu jest przekazywana do programu Serialize funkcji.Wywołania IsLoading funkcji CArchive obiekt, aby ustalić, czy Serialize została wywołana funkcja ładowania danych z pliku lub przechowywania danych w pliku.
Serialize Funkcji możliwy do serializacji CObject-klasy pochodnej ma zazwyczaj następującą postać:
void CSerializableObj::Serialize( CArchive& archive )
{
// call base class function first
// base class is CObject in this case
CObject::Serialize( archive );
// now do the stuff for our specific class
if( archive.IsStoring() )
{
// TODO: add storing code here
}
else
{
// TODO: add storing code here
}
}
Powyższe szablon kodu jest dokładnie taka sama, jako jeden AppWizard tworzy dla Serialize funkcji dokumentu (Klasa pochodna od CDocument).Ten szablon kodu ułatwia pisanie kodu, które ułatwia przeglądanie, ponieważ przechowywanie kodu i kodu załadunku zawsze powinny być równoległe, jak w poniższym przykładzie:
void CEmployee::Serialize( CArchive& archive )
{
// call base class function first
// base class is CObject in this case
CObject::Serialize( archive );
// now do the stuff for our specific class
if( archive.IsStoring() )
archive << m_strName << m_wAge;
else
archive >> m_strName >> m_wAge;
}
Definiuje biblioteki << i >> operatory CArchive jako pierwszy argument i typy klas jako drugi operand następujące typy danych:
CObject* |
ROZMIAR i CSize |
Pływak |
PROGRAM WORD |
CString |
PUNKT iCPoint |
DWORD |
BAJT |
RECTiCRect |
Podwójne |
DŁUGIE |
CTimeiCTimeSpan |
Int |
COleCurrency |
COleVariant |
COleDateTime |
COleDateTimeSpan |
|
[!UWAGA]
Przechowywanie i ładowanie CObjects za pośrednictwem archiwum wymaga dodatkowych.Aby uzyskać więcej informacji, zobacz przechowywanie i ładowanie CObjects, via archiwum.
CArchive << i >> podmioty gospodarcze zawsze zwraca odwołanie do CArchive obiekt, który jest pierwszym argumentem.Umożliwia to łańcucha podmiotów gospodarczych, jak pokazano poniżej:
archive << m_strName << m_wAge;