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

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;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言的c语句ab2,当初我在重庆交通大学读书的时候C语言成绩也相当不错的

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼主,感激不尽。1、C语言数组下标默认从 ______开始。2、C语言全局变量的存储值类型可以是exlern和_______3、结构化程序设计的三种基本结构分别指的是顺序结构、_____和_____4、若有定义imb2,c0执行下面的表…

android mvc使用方法,详细学习android mvc设计模式教程

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 web 应用程序的模式。其分层有助于管理复杂的应用程序,因为可以在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易…

android l 电池,DIY新技能--M1L换电池

DIY新技能--M1L换电池2019-10-23 16:48:526点赞6收藏10评论更换理由M1L是好几年前买的了,具体几年前我都懒得购买记录了。前前后后买了4台锤子手机了,这是我支持老罗的第二款手机,前一款是坚果手机,买了两台早先给妈妈用一台后来给…

android版本10好不好,一加正式推送Android 10系统 流畅性怎么样

近日,一加正式推送Android 10系统,不知道流畅性如何呢?一加官方推特正式宣布Android 10系统已进行阶段性推送,从今天开始一加7和一加7 Pro手机用户将会陆续收到氧OS系统的更新,国内基于Android 10的氢OS将于下月推送。…

android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习

1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载。通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为0&#xff…

r语言 html表格,R语言table()函数

R语言table()函数比较有用,两个示例尤其是混淆矩阵这个案例比较有用:例子一:统计频次zz1#实现z中各数据频次的统计z1 2 4 73 3 1 1names(z1)#居然是有名字的[1] "1" "2" "4" "7"例子二:实…

android屏幕适配流程,Android屏幕适配姿势

GitHub地址为什么要屏幕适配?device_framentation.png统计碎片化品牌机型碎片化屏幕尺寸碎片化操作系统碎片化为了保证用户获得一致的用户体验效果,使得某一元素在Android不同尺寸、不同分辨率的手机上具备相同的显示效果,则需要我们进行屏幕…

在html中写js提示错误,页面HTML标签优化

真正需要SEOer掌握并经常使用的HTML标签也就那么几个,本小节错误君带来的是页面HTML标签优化。title标签 – 标题标签1)title标签用法2.13 TF-IDF加权方法 – 错误教程2)标题标签的作用文章标题有着关键词的作用,文章标题引点击流量。3)页面标题标签优化…

在线聊天室html5源码,HTML5WebSocket实现聊天室的代码示例

本篇文章主要介绍了HTML5-WebSocket实现聊天室示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。在传统的网页实现聊天室的方法是通过每隔一段时间请求服务器获取相关聊天信息来实现,然而html5带来的websocket功能改变这了这种方式&am…

android人脸情绪识别器,基于Android平台的人脸表情识别系统的设计与实现

摘要:随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐增多,如图片文字识别,人脸识别等等.而近年来,人脸表情识别技术成为…

android删除键监听,「React Native」Android返回键监听

在需要做监听的js中添加componentWillMount() {if (Platform.OS android) {BackHandler.addEventListener(hardwareBackPress, this.onBackHandler);}}componentWillUnmount() {if (Platform.OS android) {BackHandler.removeEventListener(hardwareBackPress, this.onBackHa…

列表页时间日期标签靠显示html,帝国CMS列表页面list.var分别调用年月日,显示个性时间日期...

在帝国CMS中列表页个性时间显示的实现方式,首先我们要知道用什么方法来实现,这里我们使用PHP代码来做。要在模板代码中使用PHP代码,就必须勾选此模板代码页面的-使用程序代码.位置就在添加模板页面的列表内容模板(list.var) (*)上边。然后我们在list.var…

html鼠标响应事件吗,学习JavaScript鼠标响应事件

本文为大家分享了一个简单的鼠标模拟案例,供大家参考,具体实现内容如下如何实现捕抓鼠标事件,当鼠标滑动时,获取当前鼠标的坐标,接着在一个透明区域里绑定捕抓的位移,这样就能在模拟的透明区域里实现鼠标滑…

html5边框闪烁,HTML – CSS框阴影动画像素艺术闪烁

部分用于测试,部分用于我的设计理念,我试图将动画gif转换为纯动画CSS.它几乎正常工作,但我遇到了障碍,我不确定是什么导致了我的问题,或者我如何解决它.我不幸地怀疑我只是限制了技术.至于实际的CSS,我一直在尝试实现这里的方法(动画框阴影属性),因为它看起来最可行&#xff1a…

html浏览器边框颜色,CSS设置字体和边框颜色时Chrome和其他主流浏览器差别的问题_html/css_WEB-ITnose...

a.toregister:link {text-decoration:none;width:90px;height:40px;font-family:"黑体" ;font-weight: bold;border:1px solid #cccccc;color:rgb(100,100,100);background-color:#d1d2d3;position:absolute;left:1348px;letter-spacing:3px;top:20px;text-align:cen…

用计算机表示45,计算机应用基础信息专业技术习题(45页)-原创力文档

计算机应用基础信息技术习题———————————————————————————————— 作者:———————————————————————————————— 日期:计算机应用基础信息技术习题11.在微机系统中,对输入、输出设备进行管理的…

电大计算机应用基础试卷号2007,电大计算机应用基础(试卷版)计算机试卷7.doc...

PAGE 7计算机试卷7一、单选题1.1946年在美国诞生的世界上第一台电子计算机的英文首字母缩写名为______。A.ENIACB.EBSACC.MARKD.EDVAC答案:A2.下列关于专用计算机的描述中,不正确的是_______。A.用途广泛B.针对性强、效率高C.为某种特定目的而设计D.结构…

如把联想电脑计算机图标放在桌面上,thinkpad电脑图标没了怎么恢复

正常情况下,在电脑的桌面上都会有系统自带的程序图标,以及用户自己创建的一些图标。可是最近有网友却跟小编反映说,自己thinkpad电脑出现了图标都没了的情况,不知道怎么回事,更加不清楚怎么恢复。那么对此今天本文就来…

未来计算机领域最急缺的人,未来十年最紧缺职业 没人愿意干的高薪职业

未来十年最紧缺职业 没人愿意干的高薪职业2019-03-19 09:25:56文/刘美娟未来十年中国最紧缺的高薪职业类型有:金融分析师、理财规划师以及动漫设计师等。未来最紧缺的高薪职业金融分析师金融分析师是证券投资和管理界的高级人才,目前我国能够真正拿到特许…

html分页实现w3c,分页_w3cschool

在其他的框架中,实现分页是令人感到苦恼的事,但是 Laravel 令它实现起来变得轻松。 Laravel 可以产生基于当前页面的智能「范围」链接,所产生的 HTML 兼容 Bootstrap CSS 框架.有几种方法来分页对象。最简单的是在搜索构建器使用 paginate 方…