Używanie operatorów << and >> obiektu CArchive
CArchivezawiera << i >> podmioty gospodarcze do zapisywania i odczytywania proste typy danych jak również CObjects do i z pliku.
Próba zapisania obiektu w pliku przez archiwum
Poniższy przykład pokazuje jak przechowywać obiektu w pliku przez archiwum:
CArchive ar(&theFile, CArchive::store); WORD wEmployeeID = 78; ar << wEmployeeID;
Aby załadować obiektu z wartości uprzednio zapisane w pliku
Poniższy przykład pokazuje jak załadować obiektu z wartości uprzednio zapisane w pliku:
CArchive ar(&theFile, CArchive::load); WORD wEmployeeID; ar >> wEmployeeID;
Zwykle, zapisywanie i ładowanie danych do i z pliku przez archiwum w Serialize funkcje CObject-klasy, które muszą być zadeklarowane z pochodne DECLARE_SERIALIZE makro.Odwołanie do CArchive obiekt jest przekazywany do sieci Serialize funkcji.Wywołania IsLoading funkcja CArchive obiekt, aby określić, czy Serialize została wywołana funkcja ładowania danych z pliku lub przechowywać dane w pliku.
Serialize Do serializacji funkcji CObject-Klasa pochodna zazwyczaj ma 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ższy kod szablonu jest dokładnie taka sama jak jedna AppWizard tworzy dla Serialize funkcji dokumentu (Klasa pochodna od CDocument).Ten szablon kodu pomoże Ci napisanie kodu, który jest łatwiejsze do przeglądania, ponieważ przechowuje kod i kod ładujący zawsze powinny być równoległe, jak w następującym 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 >> operatorów dla CArchive jako pierwszy argument następujące typy danych i typy klas jako drugi argument:
CObject* |
ROZMIAR i CSize |
typ float |
WORD |
CString |
PUNKT iCPoint |
DWORD |
BAJT |
RECT i CRect |
Wartość dwubajtowa |
DŁUGI |
CTime i CTimeSpan |
Int |
COleCurrency |
COleVariant |
COleDateTime |
COleDateTimeSpan |
|
[!UWAGA]
Przechowywanie i ładowanie CObjects za pośrednictwem archiwum wymaga dodatkowych rozważań.Aby uzyskać więcej informacji, zobacz przechowywanie i ładowanie CObjects za pośrednictwem archiwum.
CArchive<< i >> podmioty gospodarcze zawsze zwraca odwołanie do CArchive obiekt, który jest pierwszym argumentem.Umożliwia to łańcuch podmioty gospodarcze, jak zostało to przedstawione poniżej:
archive << m_strName << m_wAge;