2009-04-24 112 views

回答

3

您可以使用GetBuffer函數從CString中獲取字符緩衝區。

+3

該類型是LPTSTR,如果定義了UNICODE,_UNICODE,則strcpy將不起作用。 – dirkgently 2009-04-24 09:51:27

7

您使用CString :: GetBuffer()來獲取TCHAR [] - 指向緩衝區的指針。如果你編譯時沒有定義UNICODE就足夠了 - TCHAR與char相同,否則你將不得不分配一個單獨的緩衝區並使用WideCharToMultiByte()進行轉換。

1

只調用GetBuffer方法是不夠的,您還需要將此緩衝區複製到數組。

例如:

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

我這個掙扎,但我現在用的是這樣的:(UNICODE型)

CString的strCommand( 「我的文本發送給DLL。」);

**

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

**

// CStringA是CString的 的非寬/ Unicode字符的版本,則這將會把你的空終止字符數組中strPass你。

另外,如果你控制的另一邊的DLL,指定你的參數爲:

爲const char * strParameter

而不是

字符 strParameter *

將「很可能」轉換CStrings爲您的默認鑄件通常是有效的。