在一个edit控件中得到ip地址 在线程中使用 怎么搞?
我是给 edit控件加了一个CString类型的变量:IDC_EDIT_IP CString m_edit_ip
在线程里 addrSrv.sin_addr.S_un.S_addr=inet_addr(pDlg->m_edit_ip);
报错:error C2664: 'inet_addr' : cannot convert parameter 1 from 'class CString' to 'const char *'
要是换成 addrSrv.sin_addr.S_un.S_addr=inet_addr(pDlg->m_edit_ip.LockBuffer());
报错:error C2664: 'inet_addr' : cannot convert parameter 1 from 'unsigned short *' to 'const char *'
[解决办法]
#include<AtlBase.h>
USES_CONVERSION;
addrSrv.sin_addr.S_un.S_addr=inet_addr(T2A(pDlg->m_edit_ip));
[解决办法]
addrSrv.sin_addr.S_un.S_addr=(char*)inet_addr(pDlg->m_edit_ip.LockBuffer());
[解决办法]
将CString转成char*
CString str = _T("...");char buf[...] = {0};#ifdef UNICODEWideCharToMultiByte(CP_ACP, ...);#elsesprintf(buf, "%s", str);#endif
[解决办法]
addrSrv.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)pDlg->m_edit_ip);
[解决办法]
addrSrv.sin_addr.S_un.S_addr=inet_addr(CW2A(pDlg->m_edit_ip));
[解决办法]
addrSrv.sin_addr.S_un.S_addr=inet_addr((char*)(_bstr_t)pDlg->m_edit_ip);