2009-04-24 16 views

Respuesta

3

Puede usar la función GetBuffer para obtener el búfer de caracteres de CString.

+3

El tipo es LPTSTR, strcpy no funcionará si se define UNICODE, _UNICODE. – dirkgently

7

Utiliza CString :: GetBuffer() para obtener el TCHAR [] - el puntero al búfer. Si compiló sin UNICODE definido, eso es suficiente: TCHAR es lo mismo que char, de lo contrario tendrá que asignar un buffer separado y usar WideCharToMultiByte() para la conversión.

1

Llamar solo al método GetBuffer no es suficiente, también necesitará copiar este búfer a la matriz.

Por ejemplo:

CString sPath(_T("C:\temp\")); 
TCHAR tcPath[MAX_PATH]; 
_tcscpy(szDisplayName, sPath.GetBuffer(MAX_PATH)); 
4

tuve problemas con esto, pero lo que yo uso ahora es la siguiente: (Unicode amistoso)

CString strCommand ("Mi texto para enviar a un archivo DLL.");

**

char strPass[256]; 
strcpy_s(strPass, CStringA(strCommand).GetString()); 

**

// CStringA es una versión de carácter no ancho/Unicode de CString Esto luego poner su terminada en nulo matriz de caracteres en strPass para usted.

Además, si el control de la DLL en el otro lado, la especificación de los parámetros como:

const char * strParameter

en lugar de

carbón strParameter *

"probablemente" convertirá CStrings por usted con el casting predeterminado generalmente efectivo.

Cuestiones relacionadas