void CFileDataIO::WriteLongString(const CString& rstr, EUtf8Str eEncode) { #define WRITE_STR_LEN(n) WriteUInt32(n) if (eEncode == utf8strRaw) { CUnicodeToUTF8 utf8(rstr); WRITE_STR_LEN(utf8.GetLength()); Write((LPCSTR)utf8, utf8.GetLength()); } else if (eEncode == utf8strOptBOM) { if (NeedUTF8String(rstr)) { CUnicodeToBOMUTF8 bomutf8(rstr); WRITE_STR_LEN(bomutf8.GetLength()); Write((LPCSTR)bomutf8, bomutf8.GetLength()); } else { CUnicodeToMultiByte mb(rstr); WRITE_STR_LEN(mb.GetLength()); Write((LPCSTR)mb, mb.GetLength()); } } else { CUnicodeToMultiByte mb(rstr); WRITE_STR_LEN(mb.GetLength()); Write((LPCSTR)mb, mb.GetLength()); } #undef WRITE_STR_LEN }
void CFileDataIO::WriteLongString(const CString& rstr, EUtf8Str eEncode) { #define WRITE_STR_LEN(n) WriteUInt32(n) #ifdef _UNICODE if (eEncode == utf8strRaw) { CUnicodeToUTF8 utf8(rstr); WRITE_STR_LEN(utf8.GetLength()); Write((LPCSTR)utf8, utf8.GetLength()); } else if (eEncode == utf8strOptBOM) { if (NeedUTF8String(rstr)) { CUnicodeToBOMUTF8 bomutf8(rstr); WRITE_STR_LEN(bomutf8.GetLength()); Write((LPCSTR)bomutf8, bomutf8.GetLength()); } else { CUnicodeToMultiByte mb(rstr); WRITE_STR_LEN(mb.GetLength()); Write((LPCSTR)mb, mb.GetLength()); } } else { CUnicodeToMultiByte mb(rstr); WRITE_STR_LEN(mb.GetLength()); Write((LPCSTR)mb, mb.GetLength()); } #else if (eEncode == utf8strRaw) { CStringW wstr(rstr); CUnicodeToUTF8 utf8(wstr); WRITE_STR_LEN(utf8.GetLength()); Write((LPCSTR)utf8, utf8.GetLength()); } else if (eEncode == utf8strOptBOM) { CStringW wstr(rstr); if (NeedUTF8String(wstr)) { CUnicodeToBOMUTF8 bomutf8(wstr); WRITE_STR_LEN(bomutf8.GetLength()); Write((LPCSTR)bomutf8, bomutf8.GetLength()); } else { CUnicodeToMultiByte mb(wstr); WRITE_STR_LEN(mb.GetLength()); Write((LPCSTR)mb, mb.GetLength()); } } else { UINT uLen = rstr.GetLength(); WRITE_STR_LEN(uLen); Write((LPCSTR)rstr, uLen); } #endif #undef WRITE_STR_LEN }