Carchive를 사용 하 여 << 및 >> 연산자
CArchive제공 << 및 >> 쓰고 읽기는 단순 데이터 형식의 연산자는 물론 CObject파일에서 s.
개체를 통해 아카이브 파일에 저장할 수
다음 예제에서는 개체를 통해 아카이브 파일에 저장 하는 방법을 보여 줍니다.
CArchive ar(&theFile, CArchive::store); WORD wEmployeeID = 78; ar << wEmployeeID;
파일에 이전에 저장 된 값에서 개체를 로드 하려면
다음 예제에서는 파일에서 이전에 저장 된 값에서 개체를 로드 하는 방법을 보여 줍니다.
CArchive ar(&theFile, CArchive::load); WORD wEmployeeID; ar >> wEmployeeID;
일반적으로 저장 하 고 아카이브를 통해 파일에서 데이터를 로드할의 Serialize 기능을 CObject-으로 선언 해야 하는 클래스를 파생의 DECLARE_SERIALIZE 매크로.에 대 한 참조는 CArchive 개체에 전달 되는 Serialize 함수.전화는 IsLoading 의 함수는 CArchive 개체를 결정 합니다 여부는 Serialize 함수 호출 파일에서 데이터를 로드 하거나 데이터를 파일에 저장.
Serialize 함수를 순차 가능 CObject-파생된 클래스는 일반적으로 있습니다.:
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
}
}
위의 코드 템플릿이 하나로 만드는 응용 프로그램 마법사에 대 한 동일의 Serialize 문서의 함수 (파생 된 클래스에서 CDocument).이 코드 템플릿을 저장 코드와 로드 코드 항상 다음 예제에서와 같이 나란히 있어야 하므로 검토 하기 쉬운 코드를 작성 하는 데 도움이 됩니다.
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;
}
라이브러리 정의 << 및 >> 연산자에 대 한 CArchive 첫 번째 피연산자 데이터 형식 및 둘째 피연산자로 클래스 형식으로:
CObject* |
크기 및 CSize |
float |
WORD |
CString |
포인트 및CPoint |
DWORD |
BYTE |
RECT 및 CRect |
Double |
LONG |
CTime 및 CTimeSpan |
Int |
COleCurrency |
COleVariant |
COleDateTime |
COleDateTimeSpan |
|
[!참고]
저장 하 고 로드 CObject보관 저장소를 통해 추가 고려 사항이 필요 합니다.자세한 내용은 를 저장 하 고 로드 CObjects 아카이브를 통해.
CArchive << 및 >> 연산자에 대 한 참조를 반환할 항상는 CArchive 개체를 첫 번째 피연산자입니다.이 연산자를 연결 하 여 아래와 같이 있습니다.
archive << m_strName << m_wAge;