CMemFile 和 Unicode
Posted
技术标签:
【中文标题】CMemFile 和 Unicode【英文标题】:CMemFile and Unicode 【发布时间】:2009-10-28 12:12:24 【问题描述】:我是否认为 MFC 类 CMemFile 不能用于写入 unicode 数据,因为它使用定义为 unsigned char BYTE 的 BYTE*?
在CMemFile::Write中实际写入数据的行是
Memcpy((BYTE*)m_lpBuffer + m_nPosition, (BYTE*)lpBuf, nCount);
如果可以,我可以在自己的 CMemfIle 实现中将 BYTE 替换为 wchar_t 以使其与 unicode 一起使用吗?
谢谢你 保罗..
【问题讨论】:
【参考方案1】:不明白为什么不能直接使用。
唯一的问题是,当您进行内存复制时,您不能将 character 计数与 byte 计数互换。
【讨论】:
【参考方案2】:文件是二进制的,所以总是读/写字节,并使用编码层转换成字符串,除非你确定数据是 ASCII 编码的。
不,您需要一个编码器/解码器。对于 Unicode,您需要一个 unicode 标头,后跟编码字符。编码字符的确切二进制值可能因 unicode 编码(UTF-7、UTF-8、UTF-16、UTF-32 等)而有所不同。
【讨论】:
你的意思是记录起始偏移量和字符串长度吗?以上是关于CMemFile 和 Unicode的主要内容,如果未能解决你的问题,请参考以下文章