网上有人说这种方案:
1、CString转char
*
CString cstr;
char *p =(LPSTR)(LPCTSTR)cstr;
实际测试,方法行不通,原因如下:
还有人说这种方案:
2、CString转char
*
CString strInsertSql = L"TEST测试";
char sql[256] = "";//初始化
sprintf(sql,"%s",strInsertSql);
实际测试,方法行不通,原因如下:
正确办法:
class CTools
{
public:
CTools(void);
~CTools(void);
//CString类型转char *
char *CStringToCharP(CString strIn);
};
char * CTools::CStringToCharP( CString strIn )
{
char * buffer = NULL;
int iTextLen;
iTextLen = WideCharToMultiByte( CP_ACP,0,strIn,-1,NULL,0,NULL,NULL );
buffer = NULL;
buffer = new char[iTextLen + 1];
memset( ( void* )buffer, 0, sizeof( char ) * ( iTextLen + 1 ) );
::WideCharToMultiByte( CP_ACP,0,strIn,-1,buffer,iTextLen,NULL,NULL );
return buffer;
}