北大青鸟

首页 > .Net技术教程

站内公告

.NET技术教程之VC.NET程序中的CString类应用解析

责任编辑:宏鹏来源:武汉北大青鸟鲁广校区时间:10-19
导读:.NET技术教程之VC.NET程序中的CString类应用解析来帮助大家了解.NET开发中的一些技巧性东西。

.NET技术教程之VC.NET程序中的CString类应用解析来帮助大家了解.NET开发中的一些技巧性东西。北大青鸟武汉宏鹏鲁广校区学士后.NET课程将会通过对CString类源代码的一些分析,使得大家对于这个类具有更深入的了解,避免在以后使用过程中出错。

.NET技术教程之为什么是VC.NET的CString类?

答案很简单,在M$将MFC从4.X(VC6)升级到7.X(VC.NET)开始,原来的CString被重新设计以便与ATL共用,并且支持了template特性。而由于VC6对于C++标准支持差得令人发指,成为众矢之的,且逐渐式微,将成明日黄花,故这里分析VC.NET的CString类

1. 亲子疑团之谁是我爹

在新的MFC体系中,CString并不是一个实际存在的类,实际上存在的是CSimpleStringT和CStringT,而我们常用的CString只是一个typedef-class.

这种变动,无疑让CString的身世显得扑朔迷离。

CString童鞋内牛满面,不禁高呼:你们到底谁TM是俺爹?

CString是谁呢?呃,在经过一番从CString到它祖宗十八代的调查后,我们发现:CString的爹,其实是CSimpleStringT.而CStringT,则是CString的前世

2.亲子疑团之混乱的关系

CSimpleString是CString体系变化的一个代表。

在过去,CString实际上是个独立的类,据说连万物之祖——CObject和它都没有半毛钱关系。CString一个人负责内存管理、字符串操作。etc

而到了新体系下,AFX小组为了更好地与ATL重用,将CString功能分拆成两块:基本的内存管理和缓存操作以及的字符串处理。CSimpleStringT便是负责前者。

至于CStringT,便继承自CSimpleStringT,然后封装了的字符串处理。

那么,我们为什么说CStringT是CString的前世呢?因为下面一行代码

view sourceprint?1 typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;

对于采用了模板的类来说,这种typedef并不少见,std::string也是一个typedef-class

PS1:CStringT起初在ATL中设计,并有了MFC支持版(二者应该区别不大),于是编译器分别提供了cstringt.h和atlstr.h

PS2:即使是现在,CSimpleStringT也是独立的类,与CObject仍然没有半毛钱关系

3.神秘的老爸——CSimpleStringT

CSimpleStringT在atlsimplestr.h中,而且是一个比较大的类。CSimpleStringT大多数函数都有文档说明了,我也没必要做无用功,所以我们来看一些没有文档说明的东西

CSimpleStringT为一些常用的字符/字符串类型定义了别名,便于使用

public:

typedef typename ChTraitsBase< BaseType >::XCHAR XCHAR;

typedef typename ChTraitsBase< BaseType >::PXSTR PXSTR;

typedef typename ChTraitsBase< BaseType >::PCXSTR PCXSTR;

typedef typename ChTraitsBase< BaseType >::YCHAR YCHAR;

typedef typename ChTraitsBase< BaseType >::PYSTR PYSTR;

typedef typename ChTraitsBase< BaseType >::PCYSTR PCYSTR;

ChTraitsBase类的信息如下:

template< typename BaseType = char >

class ChTraitsBase

{

public:

typedef char XCHAR;

typedef LPSTR PXSTR;

typedef LPCSTR PCXSTR;

typedef wchar_t YCHAR;

typedef LPWSTR PYSTR;

typedef LPCWSTR PCYSTR;

};

template<>

class ChTraitsBase< wchar_t >

{

public:

typedef wchar_t XCHAR;

typedef LPWSTR PXSTR;

typedef LPCWSTR PCXSTR;

typedef char YCHAR;

typedef LPSTR PYSTR;

typedef LPCSTR PCYSTR;

};

NET技术教程之VC.NET程序中的CString类应用解析将会使学生在,NET开发上掌握更多的技巧,在软件开发中更加熟练,成为更加专业的人才。

    看过该.Net技术教程的还看过

本文标题:.NET技术教程之VC.NET程序中的CString类应用解析,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于10-19发布于北大青鸟鲁广校区。.NET技术教程之VC.NET程序中的CString类应用解析来帮助大家了解.NET开发中的一些技巧性东西。

专业老师指导

赵老师

赵老师

从事IT教育培训十年有余,致力于帮助广大学子找到适合自己的专业

立即在线咨询

培训咨询客服

陈老师

陈老师

IT培训专业客服,用自己的真诚解决了无数学子的困惑

立即在线咨询

本文地址:https://m.027hpedu.com/html/1079.html

文章标题:.NET技术教程之VC.NET程序中的CString类应用解析

上一篇:

下一篇:

热点关注

推荐.Net技术教程

热门.Net技术教程

初中生
高中生
大学生
打工者
男生
女生

预约你的精彩未来

预约将免费领取7天课程体验卡

-------请选择试预约课程-------

JAVA
WEB前端
PHP
UI设计
Python
电子商务
视频剪辑
大数据工程师
平面设计

83345人已领取

全国百余家校区

只为您方便就学

北大青鸟鲁广校区

北大青鸟鲁广校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出)

预约到校
领取学习大礼包

首页

热门课程

视频网课

新闻资讯

关于学校

联系学校

预约选课申请

  • 预约时间

    请选择预约时间

  • 预约课程

    请选择预约课程

  • 姓   名
  • 手机号
  • QQ 号
  • 微信号

添加老师微信号

专业老师24小时1对1学习指导

定制专属于你的专属学习方案

微信号:17740513250

复制老师的微信号

复制成功啦

快去微信添加老师为好友吧~

北大青鸟小青

微信号:17740513250

北大青鸟小青

微信号:17740513250

设置备注
小主知道啦