char*、TCHAR*转换CString

CString str(****)

下面详细写一下其它转换

//

/*

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

* 函数: TransCStringToTCHAR

* 描述:将CString 转换为 TCHAR*

* 日期:

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

*/

TCHAR* CPublic::CString2TCHAR(CString &str)

{

int iLen = str.GetLength();

TCHAR* szRs = new TCHAR[iLen];

lstrcpy(szRs, str.GetBuffer(iLen));

str.ReleaseBuffer();

return szRs;

}

/*

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

* 函数: TCHAR2Char

* 描述:将TCHAR* 转换为 char*

* 日期:

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

*/

char* TCHAR2char(TCHAR* tchStr)

{

int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度

char* chRtn = new char[iLen+1]

wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值

return chRtn;

}

/*

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

* 函数: char2tchar

* 描述:将 char* 转换为 TCHAR*

* 日期:

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

*/

TCHAR *char2tchar(char *str)

{

int iLen = strlen(str);

TCHAR *chRtn = new TCHAR[iLen+1];

mbstowcs(chRtn, str, iLen+1);

return chRtn;

}

/*

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

* 函数: CString2char

* 描述:将CString转换为 char*

* 日期:

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

*/

char* CPublic::CString2char(CString &str)

{

int len = str.GetLength();

char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度

memset(chRtn, 0, 2*len+1);

USES_CONVERSION;

strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));

return chRtn;

}

//参考

///

//Pocket PC上的UNICODE和ANSI字符串

//By Vassili Philippov, September 26, 2001.

//杨方思歧 译

/*

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

* 函 数 名:GetAnsiString

* 描 述:将CString(unicode)转换为char*(ANSI)

* 参 数:CString &s 要转换的CString

* 返 回 值:返回转换结果

* 创建日期:

* 最后修改:

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

*/

char* GetAnsiString(const CString &s)

{

int nSize = 2*s.GetLength();

char *pAnsiString = new char[nSize+1];

wcstombs(pAnsiString, s, nSize+1);

return pAnsiString;

}

//

WideCharToMultiByte和MultiByteToWideChar函数的用法

支持Unicode编码,需要多字节与宽字节之间的相互转换

WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。

MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。

常用的代码页由CP_ACP和CP_UTF8两个。

使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。

使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。

wstring AnsiToUnicode(( const string& str )

{

int len = 0;

len = str.length();

int unicodeLen = ::MultiByteToWideChar( CP_ACP, 0, str.c_str(),-1,NULL,0 );

wchar_t * pUnicode;

pUnicode = new wchar_t[unicodeLen+1];

memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

::MultiByteToWideChar( CP_ACP,0, str.c_str(),-1, (LPWSTR)pUnicode, unicodeLen );

wstring rt;

rt = ( wchar_t* )pUnicode;

delete pUnicode;

return rt;

}

string UnicodeToAnsi( const wstring& str )

{

char* pElementText;

int iTextLen;

// wide char to multi char

iTextLen = WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL );

pElementText = new char[iTextLen + 1];

memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, pElementText,iTextLen,NULL,NULL );

string strText;

strText = pElementText;

delete[] pElementText;

return strText;

}

wstring UTF8ToUnicode(( const string& str )

{

int len = 0;

len = str.length();

int unicodeLen = ::MultiByteToWideChar( CP_UTF8, 0, str.c_str(),-1,NULL,0 );

wchar_t * pUnicode;

pUnicode = new wchar_t[unicodeLen+1];

memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

::MultiByteToWideChar( CP_UTF8,0, str.c_str(),-1, (LPWSTR)pUnicode, unicodeLen );

wstring rt;

rt = ( wchar_t* )pUnicode;

delete pUnicode;

return rt;

}

string UnicodeToUTF8( const wstring& str )

{

char* pElementText;

int iTextLen;

// wide char to multi char

iTextLen = WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, NULL, 0, NULL, NULL );

pElementText = new char[iTextLen + 1];

memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, pElementText,iTextLen,NULL,NULL );

string strText;

strText = pElementText;

delete[] pElementText;

return strText;

}

c语言char转cstring,CString、TCHAR*、char*转换 | 时刻需相关推荐

  1. c语言tchar转char,CString、TCHAR*、char*转换

    CString->TCHAR*的转化可以用函数GetBuff() 函数原型为:LPTSTR GetBuffer( int nMinBufLength ); CString str("C ...

  2. CString、TCHAR*、char*转换 cstring与char *的转化(还包含很多种转换)

    stringbasicsystemdeletenulldate <1>CString 转化为 char* [cpp] view plaincopyprint? CString strDat ...

  3. CString、TCHAR*、char*之间的转换函数

    CString->LPTSTR的转化可以用函数GetBuff() CString StrInfo="C://Windows"; LPTSTR StrTest=StrInfo. ...

  4. String,CString,TCHAR*,char*之间区别和联系

    最近老用到Cstring, TCHAR*, char*的转换. 找到一篇写得蛮详细的. 引用过来, 方便自己以后查阅. char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底 ...

  5. CString、TCHAR*、char*转换

    char*.TCHAR*转换CString CString str(****) 下面详细写一下其它转换 // /* ****************************************** ...

  6. MFC中char*,string和CString之间的转换

    string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的: char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的.所以熟练掌握三者之间的转换十 ...

  7. CString 与 LPCWSTR、LPSTR、char*、LPWSTR 等类型的转换

    From:https://www.cnblogs.com/leanee/articles/2940088.html char [] 到 LPWSTR转换的一个具体应用:http://www.cppbl ...

  8. VC2010不能将参数从“CString”转换为“const char *”

    原文地址:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/ 你在vs2010中默认字符集是UNICODE字符集 ...

  9. CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换【转】

    CString与LPCWSTR.LPSTR.char*.LPWSTR等类型的转换 VC++ 2010-09-25 21:23:12 阅读457 评论3   字号:大中小 订阅 一.CString与LP ...

最新文章

  1. 关于安卓版的eclipse连接数据库并誓言增删改查
  2. 【项目管理】PMO-为强大的收益实现演变
  3. 0基础lua学习(二十)Lua单例
  4. RabbitMQ单机瞎玩(2)
  5. 关于使用Aptana+Pydev构建Python开发环境(Django)
  6. macOS Command - otool
  7. NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
  8. 详细讲一下delphi里的 IF 语句
  9. 赵小楼《天道》《遥远的救世主》深度解析(38)丁元英的“自嘲”和作者豆豆的深意
  10. S32K FTM(FlexTimer module)详解
  11. ERNIE-Search: Bridging Cross-Encoder with Dual-Encoder via Self On-the-fly Distillation
  12. 解除智慧树网页各种限制(选中,复制,粘贴等)
  13. 廖雪峰python教程学习之习题解析
  14. 发现一个舔狗神器,Python真的太厉害了,自动下载妹子视频...
  15. Vue2 修改打包文件的编码格式(webpack-encoding-plugin)
  16. 软件工程文档生成工具
  17. win7怎么打开html 文件夹,win7系统怎么设置一个窗口打开多个文件夹
  18. 人造细胞能模仿天然细胞感知环境
  19. 一步一步教你开发《松鼠推箱子》手机游戏
  20. 内网服务器外网连接SSH远程端口转发实战详解

热门文章

  1. 腾讯车联发布TAI3.0:三步实现汽车智能进化,2个月快速上车
  2. 那些中国式家庭的小烦恼,我看用AI来解决就“都挺好” | 技术头条
  3. unity三维地图的经纬度如何在二维地图上表示_接入C++版本recastnavigation寻路库到Unity/服务端中...
  4. mac 电脑android环境变量设置,mac上Android环境变量配置
  5. 华为鸿蒙电脑操作系统测试版,华为鸿蒙测试版下载 华为鸿蒙测试版电脑版下载...
  6. 企业微信H5_集成消息解密类,消息推送Get及Post回调处理
  7. SpringBoot 整合Shiro Ehcache
  8. 使用wsimport将wsdl生成java
  9. flowable连线名称不显示bug修复说明
  10. iscroll的使用