天天看点

vs2010/MFC类型转换之CString转char *

网上有人说这种方案:

1、CString转char *

CString cstr;

char *p =(LPSTR)(LPCTSTR)cstr;

实际测试,方法行不通,原因如下:

vs2010/MFC类型转换之CString转char *

还有人说这种方案:

2、CString转char *  

    CString strInsertSql = L"TEST测试";

    char sql[256] = "";//初始化

    sprintf(sql,"%s",strInsertSql);

实际测试,方法行不通,原因如下:

vs2010/MFC类型转换之CString转char *

正确办法:

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;

}