Если вы не компилируете с включенным _UNICODE
, тогда вы можете легко получить const char *
из CString
.Просто приведите его к LPCTSTR
:
CString myString("stuff");
const char *byteString = (LPCTSTR)myString;
Это гарантированно завершится NULL.
Если у вас есть , построенный с _UNICODE
, тогда CString
является строкой в кодировке UTF-16.С этим ничего не поделаешь.
Если вам нужно скопировать данные из CString
, это очень просто, даже используя код в стиле C.Просто убедитесь, что вы выделяете достаточно памяти и копируете нужную длину:
CString myString("stuff");
char *outString = (char*)malloc(myString.Length() + 1);
strncpy(outString, (LPCTSTR)myString, myString.Length());