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);
**********************************************************************
- 20.Python类型转换,Python数据类型转换函数大全
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换. 比如说,我们想通过使用 print() 函数输出信 ...
- matlab函数大全
Matlab 图像处理相关函数命令大全 一.通用函数: colorbar 显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ col ...
- SQL-2008函数大全
SQL Server 2008 函数大全(完整版) SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合.1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) se ...
- PB函数大全
PB函数大全 Abs()功能计算绝对值.语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值.如果参数n的值为NULL, ...
- SqlServer 函数 大全
sql server使用convert来取得datetime日期数据 sql server使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换 语句及查询结果: Selec ...
- MS-SQL Server字符串处理函数大全
MS-SQL Server字符串处理函数大全 select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.Index ...
- SQL SERVER 函数大全[转]
SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...
- [转]ORACLE日期时间函数大全
本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...
- 【转】JNI学习积累之一 ---- 常用函数大全
原文网址:http://blog.csdn.net/qinjuning/article/details/7595104 本文原创,转载请注明出处:http://blog.csdn.net/qinjun ...
随机推荐
- win7老是弹出“Windows Media PIayer网络共享服务配置应用程序 已停止工作”
应是优化软件的时候把服务禁止启动了. 我的电脑 > 管理 > 服务和应用程序 > 服务 Windows Media Player Network Sharing Service 启动 ...
- TCP/IP三次握手,四次断开
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: SYN: ...
- JS实现全选、不选、反选
思路:1.获取元素.2.用for循环历遍数组,把checkbox的checked设置为true即实现全选,把checkbox的checked设置为false即实现不选.3.通过if判断,如果check ...
- dynamic-load-apk 插件与宿主方法互调
新建项目 DlPluginHost,下载dynamic-load-apk源码 1.将dynamic-load-apk 文件夹中的lib做为module导入到DlPlginHost 2.导入到Plugi ...
- VB6之截图
今天先把主要逻辑写出来,如果有时间就实现一个真正的截图工具. Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC ...
- Spring+Mybatis配置
Spring+Mybatis配置 之前做项目的时候用到了spring+mybatis框架,一直想抽空整理一下 Mybatis: mybatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 ...
- 服务器 设置 将 Tomcat 注册 到系统服务 及使用方法
将TOMCAT注册成系统服务的好处,就是方便维护,在服务器重启的时候,系统会自动启动系统服务,而不必手动操作,这就为我们在项目维护时省下不少麻烦. 在项目维护期间有很多客户只要一有问题,就电话招呼,而 ...
- 【Vue】Vue的依赖追踪系统 ——搞懂methods watch和compute
从作用机制和性质上看待methods,watch和computed的关系 <他三个是啥子关系呢?> 首先要说,methods,watch和computed都是以函数为基础的,但各自却都不同 ...
- C# 调用.exe文件
process da = new process(); da.startinfo.filename = @""D:\BM0002\BM0002.exe"; //要调用的 ...
- CentOS-7.2安装SQuirreL SQL Client连接Hive
一,SQuirreL SQL Client干吗的? SQuirreL SQL Client是一款功能强大的服务器配置管理软件,该软件能够帮助用户快速.高效的配置服务器,且支持用户查看数剧库的结构并发出 ...