2009-04-24 5 views

答えて

3

関数GetBufferを使用すると、CStringから文字バッファを取得できます。

+3

タイプがLPTSTRの場合、UNICODE、_UNICODEが定義されているとstrcpyは機能しません。 – dirkgently

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これは、あなたのヌルがあなたのためにstrPassのchar配列を終了置くのCString の非ワイド/ Unicode文字バージョンです。また

、あなたは反対側のDLL、としてあなたのパラメータを指定してコントロールしている場合:

のconst char型* strParameter

ではなく

のchar strParameter *

通常は有効なデフォルトのキャストを使用してCStringを変換する可能性があります。

関連する問題