BSTR
维库,知识与思想的自由文库
|
BSTR是一种Pascal-Style字符串(明确标示字符串长度)和C-Style字符串(以\0结尾)的混合物,一般用于COM中,是Unicode字符串,即标示字符串长度,最后还有一个\0
[编辑] C-Style 字符串C程序語言本身原並不支援字串資料結構。字符串通常以一個字符數組(或稱陣列)或一個指向字符資料的指標指標來表達。由於C語言的數組不包含其長度的資訊,故亦無法表示所載之字符串之長度。C語言社群對此通用之解決方案為於字符串末端增添一數值0的字符。C語言的標準程序庫中的字符串處理功能亦以此為基礎。C-Style 字符串特點為不真接包含長度資訊。要取得字符串之長度,就必須從頭到尾數算字符數目,直到遇到字符0為止。由於不設長度資訊,故C-style 字符串的長度理論上可以無上限。 [编辑] Pascal-style 字符串Pascal程序語言採取另一種方向處理字符串。在儲存字串的記憶空間的開首,儲存一固定長度整數以表達其長度。如此Pascal-style 字符串不需要在最後增添額外字符以標明其結束。但由於字符串開首儲存字串長度的空間有限,故Pascal-style 的字串長度有上限。但在獲得字串長度方面有速度優勢。 [编辑] BSTR 字符串BSTR 字符串結合了C-style 字符串和Pascal-style字符串。它在開首儲存了字符串長度,在字符串結尾以字符0識別。和pascal-style 字符串不同,指向BSTR字符串的指標指向第一個字符,而非開首的字串長度。故此適用於讀取C-style 字符串的程序庫同樣適用於BSTR字符串(但寫入則另作別論)。如果獲得其長度,則以其指標地址減去字符串長度數值所需空間,以獲得其字串長度之地址。 [编辑] 参考文献 |


