字符转换
UNICODE工程下
我在自定义消息传递一个参数 参数为:cstring类型
char* szText = new char[200];
ZeroMemory(szText, 200);
strcpy(szText,strDevName.GetBuffer(0));
strText.ReleaseBuffer();
AfxGetMainWnd()->PostMessage( WM_DEV_NOTONLINE, (WPARAM)szText, strlen(szText)+1 );
提示错误:
error C2664: “strcpy” : 不能将参数 2 从“ATL::CSimpleStringT<BaseType>::PXSTR”转换为“const char *”
在消息函数中又怎样获取szText;
请各位指点下,脑袋都晕了!!!!!
谢谢了!!!!!!
[解决办法]
char* szText = new char[200];
ZeroMemory(szText, 200);
strcpy(szText,strDevName.GetBuffer(0));
strText.ReleaseBuffer();
改为
TCHAR* szText = new TCHAR[200];
ZeroMemory(szText, 200);
_tcscpy(szText,strDevName.GetBuffer(0));
strText.ReleaseBuffer();
[解决办法]
char* szText = new char[200];
ZeroMemory(szText, 200);
const char* ch = (LPCTSTR)str;
strcpy(szText,ch);
[解决办法]
int strLength = str.GetLength() + 1;
char *p = new char[strLength];
strncpy(p,str, strLength);
[解决办法]
Example
msdn
The following example demonstrates the use of CString::GetBuffer.
// example for CString::GetBuffer
CString s( "abcd" );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
LPTSTR p = s.GetBuffer( 10 );
strcpy( p, "Hello" ); // directly access CString buffer
s.ReleaseBuffer( );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
[解决办法]
char* szText = new char[200];
ZeroMemory(szText, 200);
strcpy_s(szText,200,"aaaa");