c语言LPCTSTR char,LPCTSTR,std::wstring之间的转换

一般LP代表指针,C代表const,T代表宽字符,STR代表字符串,这么对应下来大概是这样:LPCTSTR = const TCHAR*

这里就不得不说TCHAR wideResult[MaxResultLen]和const TCHAR*wideResult之间的关系

前者是字符数组,后者是字符指针,字符数组大家都知道,存字符的,这里说下后面的字符指针,这里const修饰的整个字符指针而不是单单的修饰wideResult这个指针,所以这里wideResult所指向的内容是常量,不能变的,但是wideResult这个指针的指向是可以变的,也就是不能试图通过wideResult[i] = 'a';这样对内容进行改变,但是可以改变wideResult,例如wideResult++;

解释清楚了这两者之间的关系了也就能清楚的知道如下这样的操作是可以的TCHAR wideResult[MaxResultLen];

...对wideResult进行赋值操作

LPCTSTR sPath;

sPath = wideResult;

下面就来进入正题,重点说说LPCTSTR 和std::wstring之间是如何进行转换的,

typedef basic_string,allocator > wstring;

这是一个模板类,类大家都懂的,里面有很多方法啊,你可以随意调用,这些对字符串的处理时很有帮助的,而LPCTSTR是什么,指针啦,指针要对字符串进行复杂的操作是很麻烦的,这里大家应该都想把LPCTSTR转成wstring进行处理操作把,下面就说怎么转换,其实很简单

std::wstring wsPath = sPath;

就是如此的简单,之后wsPath里面的数据部分存的就是sPath所指向的内容了。

但是如果定义很多这样的对象会存在一个问题,那就是浪费内存,类内的成员都要分配内存,这样肯定影响运行速度,所以在不处理的时候最好用LPCTSTR表示字符串,要处理的时候再转成std::wstring,处理完了之后再转回来,怎么转回来呢

LPCTSTR sPath = wsPath.c_str();

同样还是如此的简单,就解决战斗了。std::wstring中会有很多常用的操作,c_str()是其中的取内容的操作,方便吧!

本文出自 “卖萌程序员” 博客,请务必保留此出处http://7677869.blog.51cto.com/7667869/1266955

http://www.dengb.com/Cyy/617554.htmlwww.dengb.comtruehttp://www.dengb.com/Cyy/617554.htmlTechArticle一般LP代表指针,C代表const,T代表宽字符,STR代表字符串,这么对应下来大概是这样: LPCTSTR = const TCHAR* 这里就不得不说TCHAR wideResult[MaxR...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值