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 chariTextLen = 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 chariTextLen = 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;} 

转载地址:http://blog.csdn.net/m372897500/article/details/17120953

CString、TCHAR*、char*转换相关推荐

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

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

  2. Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

    UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...

  3. CString TCHAR互相转换

    CString->TCHAR*的转化可以用函数GetBuffer() // 原型:LPTSTR GetBuffer( int nMinBufLength ); CString str(_T(&q ...

  4. VC++2005 CString和char*的相互转换

    原文:http://laue.cnblogs.com/archive/2005/12/26/305208.aspx 首先声明我不是一个高手,而是一个初学者,文章同样也是一个初学者对于CString和c ...

  5. VC++中CString和char*的相互转换

    网上转来的 学习下 1.传给未分配内存的const char* (LPCTSTR)指针.    CString cstr(asdd);    const char* ch = (LPCTSTR)cst ...

  6. c语言char转cstring,CString、TCHAR*、char*转换 | 时刻需

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

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

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

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

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

  9. MFC 不存在从 CString 到 char * 的适当转换函数

    最近碰到了CString 转 const char *的问题. 以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以 ...

最新文章

  1. Allan方差分析方法的直观理解
  2. 详细说说Transformer (超详细图解,一图胜千言)
  3. Java设计模式---外观模式
  4. 在VS2015中使用Boost库
  5. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  6. IntelliJ IDEA如何设置添加类时注释作者信息和日期时间
  7. 信息学奥赛一本通(1206:放苹果)
  8. Python Series库Api整理
  9. Android应用程序组件Content Provider简要介绍和学习计划 .
  10. inception v2、inception v3、inception v4
  11. 【报告分享】 2020国人旅游出行研究报告-企鹅智库(附下载)
  12. Python数据可视化三部曲之 Pyecharts 从上手到上头
  13. 【最优化基础】惩罚和障碍函数
  14. WordPress安装教程
  15. 视频怎么做GIF表情包?教你一键生成gif动图
  16. 苹果如何不显示云服务器照片,iPhone12如何隐藏照片 iPhone12不显示照片的三种方法...
  17. 2021-07-02-MySQL必知必会-笔记
  18. 骨传导耳机工作原理是什么、为什么骨传导耳机塞住耳朵声音变大?
  19. 类型数组HTML5 中的新数组
  20. day 1-requests基础用法和网页基础学习总结

热门文章

  1. chatgpt赋能python:Python中如何实现内循环到外循环
  2. Lanecat网猫软件解决办公局域网监控问题
  3. springMVC 对参数为null或参数不为null的处理
  4. atm有10000元 java_Java实现银行ATM功能示例
  5. linux中用安装ffmpeg和ffplay
  6. matlab按图像边缘抠图_ps快速选择工具|抠图常用工具(一)
  7. Linux下安装QQ2012
  8. 调用文曲星里的英语词典中的语音(游戏发音处理)
  9. 云壳卸载会记录吗_行车记录仪自带电子狗违法吗?记录仪电子狗会扣分吗
  10. 群答疑随手记:花椰妹在纸上写下了若干个连续的正整数,她把这些数遮挡住,只告诉蒜头君一共有k个数,它们的和为n,请蒜头君猜猜纸上是哪些数。现在蒜头君向你求助,帮他解决这个问题。(连续整数和)