今天在unicode环境下写程序,当将CString转换成const char*类型是出现问题报错:"cannot convert parameter 1 from 'wchar_t*' to 'const char*' "。搜索良久终于找到如下三种方法可以解决:
第一: 在COM环境下可使用如下方法,
CString strSQL;
strSQL.Format(_T('INSERT INTO Class(Name) VALUES('%s')'),
m_strName.GetBuffer(m_strName.GetLength()));
char* pchSQL =_com_util::ConvertBSTRToString(strSQL.GetBuffer(strSQL.GetLength()));
第二:使用操作系统给出的转换函数,
int nSize = WideCharToMultiByte(CP_ACP,
NULL,
strSQL.GetBuffer(strSQL.GetLength()),
-1,
NULL,
0,
NULL,
FALSE);
char* pchStr = new char[nSize];
WideCharToMultiByte(CP_ACP,
NULL,
strSQL.GetBuffer(strSQL.GetLength()),
-1,
pchStr,
nSize,
NULL,
FALSE);
delete pchStr;
第三:使用C++库给出的转换函数:
#include<stdlib.h>
......
char pchSQL[128] = {0};
wcstombs(pchSQL, strSQL, strSQL.GetLength());