0

我是 Win Forms 编程的新手,并且尝试了所有可能的方法,但均无济于事。我的问题是将文本框的内容放入 WCHAR * 缓冲区,如下所示:

String^ strTemp = tbSrc->Text; // tbSrc is a simple textbox
TCHAR* tszTemp = new TCHAR[strTemp->Length + 1]; // Allocate TCHAR buffer
strTemp->CopyTo(0, tszTemp, 0, strTemp->Length); 
// **Won't compile as tszTemp is not an array type**
tszTemp[strTemp->Length] = NULL;
...

这个例子显然行不通。我插入了 CopyTo 来说明我的问题。我不知道如何解决这个问题。有人可以提供一些帮助。这将不胜感激。

4

1 回答 1

0

假设你正在编译一个 UNICODE 项目(即TCHARis wchar_t),你可以做这样的事情

String^ strTemp = tbSrc->Text; // tbSrc is a simple textbox

// use marshalling to get wchar_t
IntPtr pString = Marshal::StringToCoTaskMemAuto(strTemp);
wchar_t *szWideChar = (wchar_t*)pString.ToPointer();

// ... do what you want with szWideChar here ...

// free the marshalled object
Marshal::FreeHGlobal(pString);
于 2013-06-17T12:44:33.167 回答