CMemFile和Unicode

时间:2009-10-28 12:12:25

标签: unicode mfc

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

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

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

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

谢谢你 保罗..

2 个答案:

答案 0 :(得分:2)

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

唯一的问题是,当您进行内存复制时,您无法将字符计数与字节计数互换。

答案 1 :(得分:0)

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

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