亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

菜鳥入門之淺談新手對CString的使用

2019-11-18 13:08:29
字體:
來源:轉載
供稿:網友


  CString類功能強大,比STL的string類有過之無不及.新手使用CString時,都會被它強大的功能所吸引.然而由于對它內部機制的不了解,新手在將CString向C的字符數組轉換時輕易出現很多問題.因為CString已經重載了LPCTSTR運算符,所以CString類向const char *轉換時沒有什么麻煩,如下所示:
  char a[100];
  CString str("aaaaaa");
  strncpy(a,(LPCTSTR)str,sizeof(a));
  或者如下:
  
  strncpy(a,str,sizeof(a));
  
  以上兩種用法都是正確地.因為strncpy的第二個參數類型為const char *.所以編譯器會自動將CString類轉換成const char *.很多人對LPCTSTR是什么東西迷惑不解,讓我們來看看:
  
  1.LP表示長指針,在win16下有長指針(LP)和短指針(P)的區別,而在win32下是沒有區別的,都是32位.所以這里的LP和P是等價的.
  
  2.C表示const
  
  3.T是什么東西呢,我們知道TCHAR在采用UNICODE方式編譯時是wchar_t,在普通時編譯成char那么就可以看出LPCTSTR(PCTSTR)在UINCODE時是const wchar_t *,PCWSTR,LPCWSTR,在多字節字符模式時是const char *, PCSTR,LPCSTR.接下來我們看在非UNICODE情況下,怎樣將CString轉換成char *,很多初學者都為了方便采用如下方法:
  (char *)(LPCSTR)str
  
  這樣對嗎?我們首先來看一個例子:
  CString str("aa");
  strcpy((char *)(LPCTSTR)str,"aaaaaaaa");
  cout<<(LPCTSTR)str<  
  在Debug下運行出現了異常,我們都知道CString類內部有自己的字符指針,指向一個已分配的字符緩沖區.假如往里面寫的字符數超出了緩沖區范圍,當然會出現異常.但這個程序在Release版本下不會出現問題.原來對CString類已經進行了優化.當需要分配的內存小于64字節時,直接分配64字節的內存,以此類推,一般CString類字符緩沖區的大小為64,128,256,512...這樣是為了減少內存分配的次數,提高速度.
  
  那有人就說我往里面寫的字符數不超過它原來的字符數,不就不會出錯了,比如
  CString str("aaaaaaa");
  strcpy((char *)(LPCTSTR)str,"aa");
  cout<<(LPCTSTR)str<  
  這樣看起來是沒什么問題.我們再來看下面這個例子:
  CString str("aaaaaaa");
  strcpy((char *)(LPCTSTR)str,"aa");
  cout<<(LPCTSTR)str<  cout<  
  我們看到str的長度沒有隨之改變,繼續為7而不是2.還有更嚴重的問題:
  CString str("aaaaaaa");
  CString str1 = str;
  strcpy((char *)(LPCTSTR)str,"aa");
  cout<<(LPCTSTR)str<  cout<<(LPCTSTR)str1<  
  按說我們只改變了str,str1應該沒有改變呀,可是事實時他們都變成了"aa".難道str和str1里面的字符指針指向的緩沖區是一個.我們在Effective C++里面得知,假如你的類內部有包含指針,請為你的類寫一個拷貝構造函數和賦值運算符.不要讓兩個對象內部的指針指向同一區域,而應該重新分配內存.難道是微軟犯了錯?
  
  原來這里還有一個"寫時復制"和"引用計數"的概念.CString類的用途很廣,這樣有可能在系統內部產生大量的CString臨時對象.這時為了優化效率,就采用在系統軟件內部廣泛使用的"寫時復制"概念.即當從一個CString產生另一個CString并不復制它的字符緩沖區內容,而只是將字符緩沖區的"引用計數"加1.當需要改寫字符緩沖區內的內容時,才分配內存,并復制內容.以后我會給出一個"寫時復制"和"引用計數"的例子我們回到主題上來,當我們需要將CString轉換成char *時,我們應該怎么做呢?其時只是麻煩一點,如下所示:
  CString str("aaaaaaa");
  strcpy(str.GetBuffer(10),"aa");
  str.ReleaseBuffer();
  
  當我們需要字符數組時調用GetBuffer(int n),其中n為我們需要的字符數組的長度.使用完成后一定要馬上調用ReleaseBuffer();還有很重要的一點就是,在能使用const char *的地方,就不要使用char *

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲mm色国产网站| 亚洲欧美在线播放| 91大神在线播放精品| 久久影院在线观看| 国产精品久久久久久超碰| 久久久久久有精品国产| 九九热这里只有精品6| xxx欧美精品| 2019中文字幕免费视频| 中日韩午夜理伦电影免费| 97视频免费在线看| 欧美三级欧美成人高清www| 日韩一区二区三区xxxx| 日韩成人小视频| 亚洲欧美另类自拍| 国产亚洲欧美日韩一区二区| 亚洲人在线观看| 777午夜精品福利在线观看| 黄色91在线观看| 欧美中文字幕视频在线观看| 国产精品99久久久久久久久久久久| 精品动漫一区二区| 国产mv久久久| 狠狠综合久久av一区二区小说| 91精品国产综合久久香蕉922| 亚洲精品国产综合区久久久久久久| 欧美成人精品一区二区三区| 久久免费视频在线观看| 午夜精品www| 国产亚洲视频在线| 亚洲女在线观看| 91九色国产社区在线观看| 国产亚洲精品久久久久久777| 国产精品99一区| 亚洲视频999| 在线观看免费高清视频97| 色多多国产成人永久免费网站| 日韩精品久久久久久福利| 色爱av美腿丝袜综合粉嫩av| 欧美在线中文字幕| 亚洲色图综合久久| 亚洲天堂开心观看| 日本不卡高字幕在线2019| 成人福利视频在线观看| 国产欧美日韩免费| 国产精品尤物福利片在线观看| 国产欧美精品在线播放| 国产日韩av在线| 欧美大片免费观看在线观看网站推荐| 国产精品一区av| 日韩一中文字幕| 欧美寡妇偷汉性猛交| 国产精品三级久久久久久电影| 日韩国产高清污视频在线观看| 另类美女黄大片| 国产精品美女久久久免费| 欧美成人一区二区三区电影| 欧美性极品xxxx娇小| 国产精品高潮呻吟久久av野狼| 欧美黑人一级爽快片淫片高清| 亚洲欧洲视频在线| 91情侣偷在线精品国产| 日韩欧美高清视频| 欧美性xxxxxx| 精品久久久久久中文字幕| 欧美最猛性xxxx| 美女视频久久黄| 亚洲国内精品视频| 国产免费一区二区三区在线能观看| 91精品视频在线| 久久久av免费| 国产精品美女久久久免费| 激情成人中文字幕| 久久夜色精品国产亚洲aⅴ| 91在线观看免费观看| 国产日韩欧美在线| 中文字幕视频在线免费欧美日韩综合在线看| 一本大道亚洲视频| 国产欧美日韩高清| 国产精品视频地址| 中文国产成人精品久久一| 欧美限制级电影在线观看| 国产精品久久久久av| 日韩欧美在线一区| 日韩电影在线观看永久视频免费网站| 亚洲欧洲国产伦综合| 欧美高清视频免费观看| 久久久久久久久久国产精品| 亚洲欧洲免费视频| 日韩中文字幕视频在线| 国产综合福利在线| 国产成人精品综合久久久| 欧美精品在线网站| 亚洲а∨天堂久久精品9966| 97精品国产97久久久久久| 亚洲石原莉奈一区二区在线观看| 国产精品高清免费在线观看| 国产小视频国产精品| 亚洲在线一区二区| 日韩av在线网页| 欧美另类69精品久久久久9999| 日韩中文字幕免费视频| 亚洲欧美国产另类| 国产在线视频不卡| 97热在线精品视频在线观看| 狠狠躁夜夜躁人人爽天天天天97| 精品久久中文字幕久久av| 亚洲区中文字幕| 欧美日韩亚洲国产一区| 国产精品成人va在线观看| 国产成人一区二| 国产成人亚洲综合91| 中文字幕在线观看日韩| 久久久之久亚州精品露出| 亚洲欧美日韩爽爽影院| 亚洲男人天堂2023| 日韩精品免费综合视频在线播放| 亚洲最大福利视频| 亚洲一区二区在线| 欧美成年人视频网站| 亚洲色图综合久久| 92福利视频午夜1000合集在线观看| 欧美不卡视频一区发布| 国产一区二区三区视频免费| 97精品一区二区三区| 亚洲天堂av图片| 久久久久久久久综合| 国产精品女人网站| 国产欧美日韩精品专区| 国产日韩欧美中文| 久久人体大胆视频| 91夜夜揉人人捏人人添红杏| 欧美极度另类性三渗透| 国产精品国模在线| 一级做a爰片久久毛片美女图片| 91国偷自产一区二区三区的观看方式| 成人福利免费观看| 国产精品草莓在线免费观看| 欧美激情亚洲自拍| 日韩视频免费中文字幕| 欧美日韩亚洲网| 韩国三级日本三级少妇99| 日本道色综合久久影院| www.午夜精品| 日韩美女免费视频| 亚洲韩国日本中文字幕| 亚洲精品福利在线| 亚洲美女在线视频| 午夜精品美女自拍福到在线| 精品久久中文字幕| 国产亚洲精品美女久久久| 欧洲一区二区视频| 久久影视电视剧免费网站清宫辞电视| 免费97视频在线精品国自产拍| 亚洲激情在线观看视频免费| 久久天天躁狠狠躁夜夜躁| 97人人模人人爽人人喊中文字| 高清视频欧美一级| 国产欧美婷婷中文| 日韩av在线网站| 91精品视频免费| 国产国产精品人在线视| 欧美日韩久久久久| 国产精品福利网站|