【问题标题】:CMemFile and UnicodeCMemFile 和 Unicode
【发布时间】:2025-12-27 23:45:11
【问题描述】:

我是否认为 MFC 类 CMemFile 不能用于写入 unicode 数据,因为它使用定义为 unsigned char BYTE 的 BYTE*?

在CMemFile::Write中实际写入数据的行是

 Memcpy((BYTE*)m_lpBuffer + m_nPosition, (BYTE*)lpBuf, nCount);

如果可以,我可以在自己的 CMemfIle 实现中将 BYTE 替换为 wchar_t 以使其与 unicode 一起使用吗?

谢谢你 保罗..

【问题讨论】:

    标签: unicode mfc


    【解决方案1】:

    不明白为什么不能直接使用。

    唯一的问题是,当您进行内存复制时,您不能将 character 计数与 byte 计数互换。

    【讨论】:

      【解决方案2】:

      文件是二进制的,所以总是读/写字节,并使用编码层转换成字符串,除非你确定数据是 ASCII 编码的。

      不,您需要一个编码器/解码器。对于 Unicode,您需要一个 unicode 标头,后跟编码字符。编码字符的确切二进制值可能因 unicode 编码(UTF-7、UTF-8、UTF-16、UTF-32 等)而有所不同。

      【讨论】:

      • 你的意思是记录起始偏移量和字符串长度吗?