windows c++中存在各种类型,在实际应用过程中也需要将类型互相转换,故整理了常用类型之间的转换并将之封装成函数,仅供参考,有什么不对的地方,还请指正!
 
***********************************************************************
1、函数:ToInteger
     描述:将CString转换为int
**********************************************************************
int ToInteger(CString csSource)
{
      if (csSource .Trim() == _T(""))
      {
           return -1;
      }
      int nResult = _ttoi(csSource);
      return nResult;
}
 
 
***********************************************************************
2、函数:ToString
     描述:将int转换为CString
**********************************************************************
     bHex表示是否转换为十六进制
CString ToString(int nSource,BOOL bHex)
{
      if (bHex)
      {
       strResult.Format(_T("%02x"),nSource);
      }
      else
      {
       strResult.Format(_T("%d"),nSource);
      }
      return strResult;
}
 
 
***********************************************************************
3、函数:ToString
     描述:将int转换为CString
     注意:delete
**********************************************************************
void ToPChar(LPWSTR pszSource,char* &pcrdest)
{
    int nsourceLen=WideCharToMultiByte(CP_ACP,0,pszSource,-1,NULL,0,NULL,NULL);
 
      if (nsourceLen==0)
      {
         AfxMessageBox(_T("Empty input value!")); 
         return; 
      }
      pcrdest=new char[nsourceLen+1];
      memset(pcrdest,0x00,sizeof(char)*(nsourceLen+1));
      ::WideCharToMultiByte(CP_ACP,0,pszSource,-1,pcrdest,nsourceLen,NULL,NULL); 
}
 
 
***********************************************************************
4、函数:无
    描述:CString转char *
**********************************************************************
 #include <atlconv.h>
 USES_CONVERSION;
 char *cMac = T2A(csCommunitation);
 
 
***********************************************************************
4、函数:无
    描述:char *转wchar *
**********************************************************************
    #include <atlconv.h>
    USES_CONVERSION;
    char *c = "Hello";
    char *cMac = A2W(c);
 
    wchar_t  ws[100];
    swprintf(ws, 100, L"%hs", "ansi string");
 
③   

const wchar_t *GetWC(const char *c)

{
    const size_t cSize = strlen(c)+1;
    wchar_t* wc = new wchar_t[cSize];
    mbstowcs (wc, c, cSize);
 
    return wc;
}
 
 
***********************************************************************
4、函数:无
    描述:wchar *转char*
**********************************************************************
    USES_CONVERSION; 
    WCHAR* wc = L"Hello World" ;
    char* c = W2A(wc);
 
    char output[256];
    WCHAR* wc = L"Hellow World" ;
    sprintf(output, "%ws", wc );
 
    #include <comdef.h>  // you will need this
    const WCHAR* wc = L"Hello World" ;
    _bstr_t b(wc);
    const char* c = b;
    printf("Output: %s\n", c);
 
 
***********************************************************************
5、函数:Convert 
     描述:将指针字符串转换为无符号指针字符串
**********************************************************************
void Convert (const char* szStr,unsigned char *pBuf,int nBufSize)
{
     char szTemp[3] = {0};
     int nLen = strlen(szStr);
     for (int i = 0,j = 0; i < nLen - 1,j < nBufSize; i += 2,j++)
     {
          szTemp[0] = szStr[i];
          szTemp[1] = szStr[i + 1];
          pBuf[j] = (unsigned char) strtoul(szTemp,NULL,16);
     }
}
 
 
 
***********************************************************************
6、函数:CStringToUnsignedChar
     描述:将CString转换为unsigned char *
      头文件:#include <atlconv.h>
**********************************************************************
unsigned char* CStringToUnsignedChar(CString csCommunitation,unsigned char *ucBuf)
{
     USES_CONVERSION;
     char *cMac = T2A(csCommunitation);
     int nLongth = strlen(cMac)/2;
     Convert(cMac,ucBuf,nLongth);
     return ucBuf;
}
 
 
***********************************************************************
7、函数:DwordToCString
     描述:将IP地址转换为CString
      如将IP地址(如192.168.53.75)转换为一个CString类型的字符串(C0 A8 35 4B)
**********************************************************************
CString   DwordToCString(CString csIp)
{
     DWORD dwIp;
     dwIp = htonl(csIp);
     CString strMainServerIP;
     DWORD dwMainServerIP = ntohl(dwIp);//网络序转到主机序
     strMainServerIP.Format(_T("%02X%02X%02X%02X"),
                                            (dwMainServerIP>>24)&0xff,  
                                            (dwMainServerIP>>16)&0xff,
                                             (dwMainServerIP>>8)&0xff,
                                            dwMainServerIP&0xff ) ;
     return strMainServerIP;
}
 
***********************************************************************
8、函数:CStringTodwIP
     描述:将CString的IP地址转换为DWORD类型的IP
      如将一个CString类型的字符串(C0 A8 35 4B)转换为IP地址(如192.168.53.75)
**********************************************************************
DWORD CStringTodwIP( CString strIP )
{
    DWORD dwRet = 0;
    CString strIPTemp = _T("");
    CString strLeft = _T("");
    CString strRight= _T("");
    int iPos = 0,iLen = 0;
    strIPTemp = strIP.GetBuffer(0);
    strRight = strIPTemp;
    iPos=strRight.Find(_T("."),0);
    iLen=strRight.GetLength();
 
    while (iPos>0)
    {
        strLeft = strRight.Left(iPos);
        dwRet=(dwRet<<8) + (unsigned)_ttoi(strLeft);
        strRight = strRight.Right(iLen - iPos - 1);
        iLen=strRight.GetLength();
        iPos=strRight.Find(_T("."),0);
    }
    dwRet=(dwRet<<8) + (unsigned)_ttoi(strRight);
    return dwRet;
}
 
 
(1)短字符与长字符的区别

所谓的短字符,就是8bit来表示的字符,典型的应用是ASCII码,而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE

Char实际上就是unsigned char,WCHAR为宽字符,而TCHAR根据是否支持unicode而不同。在程序使用sizeof(TCHAR),当默认设置时,这个值是1;当定义UNICODE宏时,这个值是2
 
***********************************************************************
9、函数:TransCStringToTCHAR
     描述:将CString转换为TCHAR*
     头文件:#include <windows.h>
**********************************************************************
TCHAR*  CStringToCHAR(CString & str)
{
    int nLen = str.GetLength();
    TCHAR* szRs = new TCHAR[nLen];
    lstrcpy(szRs,str.GetBuffer(nLen));
    str.ReleaseBuffer();
    return szRs;
}
 
 
***********************************************************************
10、函数:THCARToChar
      描述:将TCHAR*转换为char *
***********************************************************************
 
char * THCARToChar  (TCHAR* tchStr)
{
    int nLen =  2*wcslen(tchStr);//CString,TCHAR 汉字算一个字符,因此不用普通计算 长度 
    char* chRtn = new char[nLen +1]  
    wcstombs(chRtn,tchStr,nLen +1);// 转换成功返回为非负值 
    return chRtn;
}
 
***********************************************************************
11、函数:GetAnsiString 
       描述:将 CString ( unicode )转换为 char*(ANSI)
***********************************************************************
char* GetAnsiString(const CString &s)
{
    int nSize = 2*s.GetLength();
    char *pAnsiString = new char[nSize+1];
    wcstombs(pAnsiString, s, nSize+1);
    return pAnsiString;
}
 
***********************************************************************
***********************************************************************
12、函数:TransCStringToTCHAR
描述:将CString转换为TCHAR*
头文件:#include <windows.h>
**********************************************************************
TCHAR*  CStringToCHAR(CString & str)
{
    int nLen = str.GetLength();
    TCHAR* szRs = new TCHAR[nLen];
    lstrcpy(szRs,str.GetBuffer(nLen));
    str.ReleaseBuffer();
    return szRs;
}
 
***********************************************************************
13、函数:THCARToChar
描述:将TCHAR*转换为char *
***********************************************************************
 
char * THCARToChar  (TCHAR* tchStr)
{
    int nLen =  2*wcslen(tchStr);//CString,TCHAR 汉字算一个字符,因此不用普通计算 长度 
    char* chRtn = new char[nLen +1]  
    wcstombs(chRtn,tchStr,nLen +1);// 转换成功返回为非负值 
    return chRtn;
}
 
***********************************************************************
14、函数:GetAnsiString 
描述:将 CString ( unicode )转换为 char*(ANSI)
***********************************************************************
char* GetAnsiString(const CString &s)
{
    int nSize = 2*s.GetLength();
    char *pAnsiString = new char[nSize+1];
    wcstombs(pAnsiString, s, nSize+1);
    return pAnsiString;
}
 
***********************************************************************

15、

       描述:将const char * 转换为CString
**********************************************************************
 
CString  TransLPCSTRToCString(const char *)
{
    int len = strlen(pErrMsg);
    TCHAR* c1 = (TCHAR*)malloc(sizeof(TCHAR)*len);
    MultiByteToWideChar( CP_ACP , 0 , pErrMsg , len+1 , c1 , len+1);
    csText.Format(L"%s",pErrMsg);
    retrun csText;
}
 
 
******************************************************
16、函数:CStringToLPCSTR
      描述:将CString转换为const char *
*******************************************************
 
const char* CStrToLPCTSTR(CString strSrc)  
{  
     DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, NULL, 0, NULL, FALSE);  
     char *psText;  
     psText = new char[dwNum];  
     if (!psText)  
      delete []psText;  
     WideCharToMultiByte(CP_OEMCP, NULL, strSrc.GetBuffer(0), -1, psText, dwNum, NULL, FALSE);  
     return (const char*)psText;  
}  
 
 
******************************************************
17、函数:WCharToUTF8
      描述:将const TCHAR*(LPCTSTR)转换为CHAR *(LPTSTR)
*******************************************************
std::string WCharToUTF8(LPCTSTR wszBuffer)
{
    UINT nLen = WideCharToMultiByte(CP_UTF8,0,wszBuffer,-1,NULL,0,NULL,NULL); 
    CHAR* szAscii = new CHAR[nLen+1]; 
    WideCharToMultiByte(CP_UTF8, NULL, wszBuffer,-1, szAscii, nLen, NULL, NULL);  
    std::string ret = szAscii;
    delete[] szAscii;
    return ret;
}
 
 
******************************************************
18、函数:UTF8ToChar
      描述:将CHAR *(LPTSTR)转换为const TCHAR*(LPCTSTR)

*******************************************************

std::string UTF8ToChar(LPCSTR szUTF8)
{
    UINT nLen = MultiByteToWideChar(CP_UTF8, NULL, szUTF8, -1, NULL, NULL);  
    WCHAR *wszBuffer = new WCHAR[nLen+1];  
    nLen = MultiByteToWideChar(CP_UTF8,NULL,szUTF8,-1,wszBuffer,nLen);  
    wszBuffer[nLen] = '\0'; 
 
    nLen = WideCharToMultiByte(CP_ACP,0,wszBuffer,-1,NULL,0,NULL,NULL);  
    CHAR* szAscii = new CHAR[nLen+1]; 
    WideCharToMultiByte(CP_ACP,NULL,wszBuffer,-1,szAscii,nLen,NULL,NULL);  
    szAscii[nLen]='\0';  
 
    std::string ret = szAscii;
    //清理内存  
    delete[] wszBuffer; 
    delete[] szAscii;
    return ret;
}
 
 
***********************************************************************
19、将CString转LPWSTR(即wchar_*)
        USES_CONVERSION; 
         LPWSTR lpwStr = A2W(m_csUserName);
**********************************************************************
 
***********************************************************************
20、将CString转LPWSTR(即wchar_*)
        USES_CONVERSION; 
         LPWSTR lpwStr = A2W(m_csUserName);
**********************************************************************

vc类型转换函数大全的更多相关文章

  1. 20.Python类型转换,Python数据类型转换函数大全

    虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换. 比如说,我们想通过使用 print() 函数输出信 ...

  2. matlab函数大全

    Matlab 图像处理相关函数命令大全 一.通用函数: colorbar  显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ col ...

  3. SQL-2008函数大全

    SQL Server 2008 函数大全(完整版) SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合.1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) se ...

  4. PB函数大全

    PB函数大全 Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL, ...

  5. SqlServer 函数 大全

    sql server使用convert来取得datetime日期数据 sql server使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换 语句及查询结果: Selec ...

  6. MS-SQL Server字符串处理函数大全

    MS-SQL Server字符串处理函数大全   select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.Index ...

  7. SQL SERVER 函数大全[转]

    SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...

  8. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...

  9. 【转】JNI学习积累之一 ---- 常用函数大全

    原文网址:http://blog.csdn.net/qinjuning/article/details/7595104 本文原创,转载请注明出处:http://blog.csdn.net/qinjun ...

随机推荐

  1. mybatis 查询 xml list参数

    mybatis 查询 xml list参数: <select id="getByIds" resultType="string" parameterTyp ...

  2. BigDecimal四舍五入使用总结

    //BigDecimal四舍五入double f1 = new BigDecimal(1).setScale(2,RoundingMode.HALF_UP).doubleValue();//转化成字符 ...

  3. php中比较两个变量是否相等的最高效写法

    <?php //php中比较两个变量是否相等的最高效写法 function isEqual($a,$b){ return $a==$b; } var_dump(isEqual(3,3));//t ...

  4. MaintainableCSS 《可维护性 CSS》 --- ID 篇

    ID 从语法上讲,当只有一个实例时,我们应该使用一个ID.当有多个时,我们应该使用一个 class. 但是,ID 作用的优先级高于 class ,在我们想覆盖一个样式的时候,这就会导致问题. 为了演示 ...

  5. kbengine 常见问题汇总

    Q: KBEngine是什么,能用来做什么?A: KBEngine是一个通用网络游戏服务器引擎,适合绝大多数中心拓扑结构的网络游戏,包括但不限于即时和回合制MMORPG.副本类.房间类.卡牌.棋牌等. ...

  6. h5可预览 图片ajax上传 (补更),后台数据获取方法---php

    原理是 先获取,然后手动转移文件路径,不然会被服务器自动删除 demo如下: <?php header('content-Type:text/html;charset=utf-8'); $fil ...

  7. JSON.parse()与JSON.stringify()的区别

    JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...

  8. 简单的使用Seajs

    什么是Seajs Seajs是一个加载器 http://yslove.net/seajs/ 遵循 CMD 规范模块化开发,依赖的自动加载.配置的简洁清晰. 兼容性 Chrome 3+ Firefox ...

  9. 只有第三方控件pas代码生成控件

    如果他人的VCl控件只有pas代码,如何生成控件? 步骤:1.new Pakage(bpl ) 2.在Contains中Add VCl***.pas 3.再Complie ,Install 即可 XE ...

  10. 部署服务能在Dynamics CRM Online上使用吗?

    部署服务有些时候有用,改动一些参数不需要重启IIS,也不需要去数据库中更改.比如,系统默认设置一个仪表盘(Dashboard)最多6个组件,不能超过这个数量,通过部署服务是可以更改的.部署服务既可以通 ...