Unicode环境下宽字符CString与ANSI字符const char* 的转换

    技术2022-05-11  15

        今天在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());

     

     


    最新回复(0)