다음을 통해 공유


CArchive <<>> 연산자 사용

CArchive>> 에서는 파일 간 데이터 형식뿐만 아니라 CObject간단한 데이터 형식을 작성하고 읽기 위한 연산자를 제공합니다<<.

보관을 통해 파일에 개체를 저장하려면

  1. 다음 예제에서는 보관을 통해 파일에 개체를 저장하는 방법을 보여줍니다.

    CArchive ar(&theFile, CArchive::store);
    WORD wEmployeeID = 78;
    ar << wEmployeeID;
    

이전에 파일에 저장된 값에서 개체를 로드하려면

  1. 다음 예제에서는 이전에 파일에 저장된 값에서 개체를 로드하는 방법을 보여 줍니다.

    CArchive ar(&theFile, CArchive::load);
    WORD wEmployeeID;
    ar >> wEmployeeID;
    

일반적으로 DECLARE_SERIALIZE 매크로를 사용하여 선언해야 하는 파생 클래스 함수의 CObject보관 Serialize 파일을 통해 파일로 데이터를 저장하고 로드합니다. 개체에 CArchive 대한 참조가 함수에 Serialize 전달됩니다. 개체의 함수를 IsLoadingCArchive 호출하여 파일에서 데이터를 로드하거나 파일에 데이터를 저장하기 위해 함수가 호출되었는지 여부를 Serialize 확인합니다.

Serialize serializable CObject-derived 클래스의 함수는 일반적으로 다음과 같은 형식을 가합니다.

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
   }
}

위의 코드 템플릿은 문서의 함수(파생된 CDocument클래스)에 대해 Serialize AppWizard가 만든 것과 정확히 동일합니다. 이 코드 템플릿은 다음 예제와 같이 코드 저장 및 로드 코드가 항상 병렬이어야 하므로 검토하기 쉬운 코드를 작성하는 데 도움이 됩니다.

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 두 번째 피연산자로 정의하고 연산자를 정의 << 합니다.

BYTE
CObject*
COleCurrency
COleDateTime
COleDateTimeSpan

COleVariant
CString
CTimeCTimeSpan
Double

DWORD
Float
Int
LONG

POINTCPoint
RECTCRect
SIZECSize
WORD

참고 항목

보관을 통해 S를 CObject저장하고 로드하려면 추가 고려 사항이 필요합니다. 자세한 내용은 보관을 통해 CObjects 저장 및 로드를 참조 하세요.

>> 연산자는 CArchive<< 항상 첫 번째 피연산자인 개체에 대한 참조 CArchive 를 반환합니다. 이렇게 하면 아래 그림과 같이 연산자를 연결할 수 있습니다.

archive << m_strName << m_wAge;

참고 항목

Serialization: 개체 Serialize