Chopin2001 Ответов: 1

Преобразование cstring в байт и сохранение его в локальном файле.


I want to convert the cstring to bytes and store it in a local file with size.
The following code does not help. Just open the file and the string text is saved.


Что я уже пробовал:

CString str = "I am not sure that this method is right or not. Anyone can tell me how to convert a CString to BYTE* ?";

BYTE *pByte;

int length = str.GetLength();
pByte = new BYTE[length + 1];
memcpy(pByte, (VOID*)LPCTSTR(str), length);
str.ReleaseBuffer();

FILE *fp;

if (fp = fopen("C:\\Users\\user\\mui0n.txt", "wb")) {		
        fwrite(&length, sizeof(int), 1, fp);
	fwrite(pByte, length, 1, fp);
}		
fclose(fp);
delete[] pByte;

1 Ответов

Рейтинг:
12

CPallini

Если вам нужно сохранить объект CString для последующего извлечения я предлагаю вам использовать Сериализация в MFC | Microsoft Docs[^].
Тем не менее, в вашем коде вы звоните str.ReleaseBuffer() несмотря на то что ты не звонил str.GetBuffer() и, в любом случае, вы могли бы написать вместо этого


CString str = "I am not sure that this method is right or not. Anyone can tell me how to convert a CString to BYTE* ?";
FILE *fp;
if (fp = fopen("C:\\Users\\user\\mui0n.txt", "wb")) {		
        fwrite(&length, sizeof(int), 1, fp);
	fwrite((PCTSTR)str, length, sizeof(TCHAR), fp);
}		
fclose(fp);


Chopin2001

Спасибо CPallini.

CPallini

Добро пожаловать.