xingkongyun
星空隕的程序小站
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆 - 8 文章 - 26 trackbacks - 0
<
2009年9月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2009年12月 (1)
2009年9月 (1)
2009年4月 (1)
2008年12月 (1)
2008年11月 (1)
2008年10月 (2)
2008年9月 (1)
文章分類
C++語言(6)
Directx(1)
STL(2)
VC++
Windows編程(4)
操作系統(tǒng)(4)
數(shù)據(jù)結(jié)構(gòu)(10)
文章檔案
2008年11月 (1)
2008年10月 (3)
2008年9月 (10)
2008年7月 (1)
2008年6月 (13)
相冊
圖示
C++語言
C++的羅浮宮
搜索
最新評論
1.?re: 卸載遠程線程中的DLL
水平很高,學習了。
--王小亮
2.?re: 卸載遠程線程中的DLL
評論內(nèi)容較長,點擊標題查看
--疑問
3.?re: NASM 與 VC 混合編程的小結(jié)
收下了
--5545645
4.?re: VC++內(nèi)聯(lián)匯編(MSDN相關(guān)內(nèi)容完整翻譯)
謝謝
--5545645
5.?re: 安全密碼框的設(shè)計
評論內(nèi)容較長,點擊標題查看
--徐胖子
閱讀排行榜
1.?VC++內(nèi)聯(lián)匯編(MSDN相關(guān)內(nèi)容完整翻譯)(9281)
2.?保護模式與實模式的切換(8040)
3.?安全密碼框的設(shè)計(4981)
4.?NASM 與 VC 混合編程的小結(jié)(3927)
5.?SYSENTER指令相關(guān)(大段的轉(zhuǎn)載-_-)(3634)
評論排行榜
1.?通過虛函數(shù)表訪問私有虛函數(shù)(10)
2.?安全密碼框的設(shè)計(8)
3.?保護模式與實模式的切換(4)
4.?VC++內(nèi)聯(lián)匯編(MSDN相關(guān)內(nèi)容完整翻譯)(1)
5.?NASM 與 VC 混合編程的小結(jié)(1)
GetBuffer與ReleaseBuffer的用法,CString剖析---轉(zhuǎn)載
轉(zhuǎn)載自:http://hi.baidu.com/idealsoft/blog/item/02d74322339097f6d6cae24e.html
這是一個非常容易被用錯的函數(shù),主要可能是由于大家對它的功能不太了解。其實點破的話,也不是那么深奧。
GetBuffer(int size)是用來返回一個你所指定大小可寫內(nèi)存的成員方法。它和被重載的操作符LPCTSTR還是有點本質(zhì)區(qū)別的,LPCTSTR是直接返回一個只讀內(nèi)存的指針,而GetBuffer則是返回一個可以供調(diào)用者寫入的內(nèi)存,并且,你可以給定大小。下面是個簡單的,但也是非常典型的例子:
int
readFile(CString
&
str,
const
CString
&
strPathName)
{
FILE
*
fp
=
fopen(strPathName,
"
r
"
);
//
打開文件
fseek(fp,
0
, SEEK_END);
int
nLen
=
ftell(fp);
//
獲得文件長度
fseek(fp,
0
, SEEK_SET);
//
重置讀指針
char
*
psz
=
str.GetBuffer(nLen);
fread(psz, sizeof(
char
), nLen, fp);
//
讀文件內(nèi)容
str.ReleaseBuffer();
//
千萬不能缺少
fclose(fp);
}
上面的函數(shù)是GetBuffer函數(shù)最典型的用法了,其實它就相當于申請一塊nLen大小的內(nèi)存,只不過,這塊內(nèi)存是被引用在CString對象的內(nèi)部而已,這是非常有效的一種用法,如果不直接用GetBuffer函數(shù)來申請的話,那么你必須用new操作符(或者malloc()函數(shù))在CString的外部申請,然后再將申請的內(nèi)存拷貝到CString對象中,顯然這是一個非常冗余的操作
,會使你函數(shù)的效率大大下降。
ReleaseBuffer函數(shù)是用來告訴CString對象,你的GetBuffer所引用的內(nèi)存已經(jīng)使用完畢,現(xiàn)在必須對它進行封口,否則CString將不會知道它現(xiàn)在所包含的字符串的長度,所以在使用完GetBuffer之后,必須立即調(diào)用ReleaseBuffer函數(shù)重置CString的內(nèi)部屬性,其實也就是頭部信息。
posted on 2008-06-23 09:56
楊彬彬
閱讀(967)
評論(1)
編輯
收藏
引用
所屬分類:
C++語言
FeedBack:
#
re: GetBuffer與ReleaseBuffer的用法,CString剖析---轉(zhuǎn)載[未登錄]
2010-03-05 09:36
路人甲
受教了!謝謝
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
C++關(guān)鍵字之const
C++關(guān)鍵字之explicit
C++關(guān)鍵字typename(轉(zhuǎn)載)
GetBuffer與ReleaseBuffer的用法,CString剖析---轉(zhuǎn)載
C++ 枚舉類型的思考
指針, 指針的指針, 數(shù)組, 指針數(shù)組, 數(shù)組指針, 指針函數(shù), 函數(shù)指針
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 楊彬彬 Powered by:
博客園
模板提供:
滬江博客
国产精品久久新婚兰兰
|
久久AV高潮AV无码AV
|
久久亚洲AV成人出白浆无码国产
|
亚洲综合久久夜AV
|
色播久久人人爽人人爽人人片aV
|
久久99热这里只有精品国产
|
欧美亚洲国产精品久久高清
|
精品伊人久久大线蕉色首页
|
亚洲AV无码1区2区久久
|
99久久国产免费福利
|
99久久做夜夜爱天天做精品
|
久久综合九色综合网站
|
久久久99精品成人片中文字幕
|
久久精品国产99久久无毒不卡
|
久久久久人妻精品一区三寸蜜桃
|
久久午夜免费视频
|
精品国产91久久久久久久a
|
武侠古典久久婷婷狼人伊人
|
97久久精品人妻人人搡人人玩
|
久久伊人五月天论坛
|
久久免费国产精品一区二区
|
无码国内精品久久人妻蜜桃
|
一本大道久久a久久精品综合
|
97精品依人久久久大香线蕉97
|
伊人情人综合成人久久网小说
|
青青国产成人久久91网
|
亚洲精品无码久久久久去q
|
综合人妻久久一区二区精品
|
久久久久亚洲AV成人网人人软件
|
性高湖久久久久久久久AAAAA
|
亚洲第一永久AV网站久久精品男人的天堂AV
|
亚洲欧美国产精品专区久久
|
久久九九兔免费精品6
|
国产精品99久久精品
|
一97日本道伊人久久综合影院
|
99久久无码一区人妻a黑
|
久久午夜羞羞影院免费观看
|
国内精品人妻无码久久久影院导航
|
久久av无码专区亚洲av桃花岛
|
a级毛片无码兔费真人久久
|
久久99精品久久久久久水蜜桃
|