新时时彩豹子走势图

IT職業教育

華中地區北大青鳥校區IT集訓營

027-87807717

北大青鳥首頁 > 熱門IT技術教程 > .Net技術教程 > > .NET技術教程之VC.NET程序中的CString類應用解析

.NET技術教程之VC.NET程序中的CString類應用解析

時間:2012-07-12 10:45 來源:北大青鳥武漢宏鵬魯廣校區作者:027hpedu
導讀:.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開發上掌握更多的技巧,在軟件開發中更加熟練,成為更加專業的人才。

告訴我們,你現在想了解什么?

精彩專題——96%的同學看到這里都會點擊下面的專題

Copyright (c) 2006-2020 武漢宏鵬教育咨詢有限公司 版權所有 All Rights Reserved.

新时时彩豹子走势图