Как преобразовать CString в MFC в char [] (массив символов)Преобразование CString в массив символов?
ответ
Вы можете использовать функцию GetBuffer для получения символьного буфера из CString.
Вы используете CString :: GetBuffer(), чтобы получить TCHAR [] - указатель на буфер. Если вы скомпилировали без UNICODE, это будет достаточно - TCHAR будет таким же, как char, иначе вам придется выделять отдельный буфер и использовать WideCharToMultiByte() для преобразования.
Вызов только метода GetBuffer недостаточно, вам также потребуется скопировать этот буфер в массив.
Например:
CString sPath(_T("C:\temp\"));
TCHAR tcPath[MAX_PATH];
_tcscpy(szDisplayName, sPath.GetBuffer(MAX_PATH));
я боролся с этим, но то, что я использую сейчас это: (UNICODE дружеский)
CString strCommand ("Мой текст для отправки в DLL.");
**
char strPass[256];
strcpy_s(strPass, CStringA(strCommand).GetString());
**
// CStringA версия характера не широкоформатный/юникода из CString Это будет положить нуль массива символов в strPass для вас.
Кроме того, если вы управляете DLL на другой стороне, указав ваши параметры как:
сопзЬ полукокса * strParameter
, а не
голец strParameter *
будет «вероятно» конвертировать CStrings для вас, когда кастинг по умолчанию обычно эффективен.
Тип LPTSTR, strcpy не будет работать, если определен UNICODE, _UNICODE. – dirkgently