CMemFile и Unicode - PullRequest
       16

CMemFile и Unicode

0 голосов
/ 28 октября 2009

Прав ли я, полагая, что класс MFC CMemFile нельзя использовать для записи данных в кодировке Unicode, поскольку он использует BYTE *, который определяется как беззнаковый символ BYTE?

Строка, которая фактически записывает данные в CMemFile :: Write, равна

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

и если да, могу ли я заменить BYTE на wchar_t в моей собственной реализации CMemfIle, чтобы он работал с юникодом?

Спасибо тебе Paul ..

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

Не понимаю, почему его нельзя было использовать напрямую.

Единственная проблема заключается в том, что когда вы копируете память, вы не можете поменять число на число байт .

0 голосов
/ 28 октября 2009

Файлы являются двоичными, поэтому всегда читайте / записывайте байты и используйте слой кодирования для преобразования в / из строки, если вы не уверены, что данные находятся в кодировке ASCII.

Нет, вам нужен кодер / декодер. Для Unicode вам нужен заголовок Unicode, за которым следуют закодированные символы. Точные двоичные значения кодированных символов могут отличаться в зависимости от кодировки Unicode (UTF-7, UTF-8, UTF-16, UTF-32 и т. Д.).

...