2009-04-24 30 views

cevap

3

CString karakter arabelleğini almak için GetBuffer işlevini kullanabilirsiniz.

+3

Türü LPTSTR, UNICODE, _UNICODE tanımlanmışsa strcpy çalışmaz. – dirkgently

7

TCHAR [] - işaretçiyi arabelleğe almak için CString :: GetBuffer() öğesini kullanın. UNICODE tanımadığınız sürece derlediyseniz bu yeterlidir - TCHAR char ile aynıdır, aksi takdirde ayrı bir arabellek ayırmanız ve dönüştürme için WideCharToMultiByte() kullanmanız gerekir.

1

Yalnızca GetBuffer yöntemini çağırmak yeterli değilse, bu arabelleği diziye de kopyalamanız gerekir.

Örneğin

:

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

, ama ne artık kullanıma şudur: (dost UNICODE)

CString strCommand ("My Metin DLL göndermek için.");

**

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

**

// CStringA Bu daha sonra null adlı koyacağız CString olmayan bir geniş/unicode karakter sürümü sizin için strPass içinde karakter dizisi sonlandırıldı olduğunu. Ayrıca

, diğer tarafta DLL, gibi parametreler belirterek kontrol edin:

const char * strParameter

yerine

karakter strParameter *

CStrings'i sizin için "muhtemelen", genellikle etkili olan varsayılan dökümle dönüştürecektir.

İlgili konular