CString で保存される形式

投稿日 by Iwao
BOM — U+FEFF

UNICODE  FF FE FF  04  32 00  30 00  31 00  30 00 
MBCS    04 32 30 31 30


//  VC98\MFC\SRC\ArcCore.cpp

// CString serialization code
// String format:
//  UNICODE strings are always prefixed by 0xff, 0xfffe
//  if < 0xff chars: len:BYTE, TCHAR chars
//  if >= 0xff characters: 0xff, len:WORD, TCHAR chars
//  if >= 0xfffe characters: 0xff, 0xffff, len:DWORD, TCHARs

CArchive& AFXAPI operator<<(CArchive& ar, const CString& string)
{
  // special signature to recognize unicode strings
  #ifdef _UNICODE
   ar << (BYTE)0xff;
   ar << (WORD)0xfffe;

  #endif
  if (string.GetData()->nDataLength < 255) {
   ar << (BYTE)string.GetData()->nDataLength;
   }
  else if (string.GetData()->nDataLength < 0xfffe) {
   ar << (BYTE)0xff;
   ar << (WORD)string.GetData()->nDataLength;
   }
  else {
   ar << (BYTE)0xff;
   ar << (WORD)0xffff;
   ar << (DWORD)string.GetData()->nDataLength;
   }
  ar.Write(string.m_pchData, string.GetData()->nDataLength*sizeof(TCHAR));
  return ar;
  }

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です