.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 Gadgeteer
- .NET訪問配置文件app.config的功能詳解
- .Net技術如何鏈接MySQL 武漢宏鵬官方網站解密
- .NET技術教程之生成靜態頁面的例子分享
- .Net該學什么?怎么學?(四)
- JSP是什么?JSP是什么意思?
- C#培訓:C# DDOS攻擊代碼
- .Net該學什么?怎么學?(一)
- C#讀取文本文件導入SQL數據庫解決方法
- .net培訓:asp.net 判斷上傳文件的類型
看過該.Net技術教程的還看過
本文標題:.NET技術教程之VC.NET程序中的CString類應用解析,責任編輯:027hpedu,來源:北大青鳥武漢宏鵬魯廣校,于2012年07月12日10時45分發布于北大青鳥魯廣校區。武漢北大青鳥宏鵬魯廣校區,是北大青鳥武漢電腦學校,專業IT計算機培訓,擁有軟件/網絡/安卓/Web前端/Java課程.北大青鳥地址:光谷廣場魯巷數碼港.電話:027-87807717