跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 BSTR 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
BSTR
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''BSTR'''(Basic String)是一種 Pascal-Style 字捾(明確標示字串長度)和 C-Style 字捾(以 \ 零結尾)的混合物,一般用於著 COM 中,是 Unicode 字捾,即標示字串長度,最後閣有一个值為 \ 零位元組。 對於 BSTR,NULL 佮 " " 有仝款的語意(Visual Basic 引入的語意)。 BSTR 的長度無包含結尾的 \ 零位元組。BSTR 著愛用 SysAlloc \ * 作業系統 API 申請佮釋放。 ==引論== ===C-Style 字捾=== C 程式語言本身原並無支援字串資料結構。這字串通常用一字元數組(抑是講陣列)抑是一个指向字元資料的指標來表達。因為 C 語言的數組無包括其長度的資訊,故亦無法度表示所載之字串之長度。C 語言社群對這通用之解決方案為於字串末端增添一數值零的字元。C 語言的標準程式庫中的字串處理功能亦以這為基礎。C-Style 字串特點為無直接包含長度資訊。愛取得字串之長度,著愛對頭到尾算字元數目,一直到拄著字元零為止。因為無設長度的資訊,故 C-style 字串的長度理論上會當無上限。 ===Pascal-style 字捾=== Pascal 程式語言採取另外一種方向處理字串。佇儲存字串的記持空間的開首,儲存一固定長度整數以表達其長度。如此 Pascal-style 字串無需要佇咧上尾加添額外字元以標明其結束。毋過因為字葩開首儲存字串長度的空間有限,故 Pascal-style 伊的字串長度有上限。但是得著字串長度方面有速度優勢。 ==BSTR 字捾== BSTR 字葩結合矣 C-style 字串和 Pascal-style 字捾。伊佇咧前四位元組儲存了字串長度(字串的位元組數,但是無包括 Null 結束符), 佇字串結尾用字元零識別。和 pascal-style 字串無仝,指向 BSTR 字串的指標指向第一个字元,煞非開首的字串長度。故此適用佇讀取 C-style 字串的程式庫平平適用佇咧 BSTR 字捾(毋過寫入去別款)。 字元是按照 Unicode 編碼儲存。允准佇 BSTR 串中央98入去 NULL 字元。 Windows 提供矣 BSTR 相關函式: * 分配空間並初初化 BSTR,這嘛相當的 char \ * 轉換做 BSTR:比如講,BSTR bstrText= : : SysAllocString ( L " Test " ) ; * BSTR SysAllocString ( const OLECHAR \ * psz ) ; * INT SysReAllocString ( BSTR \ * pbstr , const OLECHAR \ * psz ) ; * BSTR SysAllocStringLen ( const OLECHAR \ * strIn , UINT ui ) ; * INT SysReAllocStringLen ( BSTR \ * pbstr , const OLECHAR \ * psz , unsigned int len ) ; * void SysFreeString ( BSTR bstrString ) ; * UINT SysStringLen ( BSTR ) ; / / 長度是講字串中字元的數,毋是位元組數 * UINT SysStringByteLen ( BSTR bstr ) ; 長度是講字串中位元組數 * BSTR SysAllocStringByteLen ( LPCSTR psz , UINT len ) ; * 使用 \ _ variant \ _ t 共 char \ * 轉換做 BSTR:比如講,\ _ variant \ _ t strVar ( " This is a test " ) ; BSTR bstrText=strVar . bstrVal ; * 使用 \ _ bstr \ _ t 函式,比如講:BSTR bstrText=\ _ bstr \ _ t ( " This is a test " ) ; * 使用 ATL 中專門咧操作 BSTR 字元的 CComBSTR 類:比如講 BSTR bstrText=CComBSTR ( " This is a test " ) ; * 使用 ConvertStringToBSTR。比如講:char \ * lpszText=" Test " ; BSTR bstrText=\ _ com \ _ util : : ConvertStringToBSTR ( lpszText ) ; * 使用 ConvertBSTRToString:比如講,char \ * lpszText 二=\ _ com \ _ util : : ConvertBSTRToString ( bstrText ) ; * 使用 \ _ bstr \ _ t 的類型轉換運算子加載共 BSTR 轉換做 char \ *:比如講,char \ * lpszText 二=bstrText ; * CString 轉換做 BSTR 通常是通過使用 CStringT : : AllocSysString 來實現。比如講:CString str ( " This is a test " ) ; BSTR bstrText=str . AllocSysString ( ) ; * BSTR 轉換做 CString,比如講:CStringA str=bstrText ; ==參考文獻== * [/ / web . archive . org / web / 二十五空七百空七堵一千一百十五謼一千三百三十六 / http : / / msdn 二 . microsoft . com / en-us / library / ms 二十二孵一千空六十九 . aspx 頁面存檔備份,存在網路檔案館)MSDN] * C String * What are VB String [[分類: 待校正]]
返回到「
BSTR
」。