BSTR

✍ dations ◷ 2025-09-10 10:12:08 #数据结构

BSTR(Basic String)是一种Pascal-Style字符串(明确标示字符串长度)和C-Style字符串(以\0结尾)的混合物,一般用于COM中,是Unicode字符串,即标示字符串长度,最后还有一个值为\0字节。

对于BSTR,NULL与""有相同的语义(Visual Basic引入的语义)。BSTR的长度不包含结尾的\0字节。BSTR必须用SysAlloc*操作系统API申请与释放。

C程序语言本身原并不支持字符串数据结构。字符串通常以一个字符数组(或称数组)或一个指向字符数据的指针来表达。由于C语言的数组不包含其长度的信息,故亦无法表示所载之字符串之长度。C语言社群对此通用之解决方案为于字符串末端增添一数值0的字符。C语言的标准程序库中的字符串处理功能亦以此为基础。C-Style 字符串特点为不直接包含长度信息。要获取字符串之长度,就必须从头到尾数算字符数目,直到遇到字符0为止。由于不设长度信息,故C-style 字符串的长度理论上可以无上限。

Pascal程序语言采取另一种方向处理字符串。在存储字符串的记忆空间的开首,存储一固定长度整数以表达其长度。如此Pascal-style 字符串不需要在最后增添额外字符以标明其结束。但由于字符串开首存储字符串长度的空间有限,故Pascal-style 的字符串长度有上限。但在获得字符串长度方面有速度优势。

BSTR 字符串结合了C-style 字符串和Pascal-style字符串。它在前4字节存储了字符串长度(字符串的字节数,但不包括Null结束符),在字符串结尾以字符0识别。和pascal-style 字符串不同,指向BSTR字符串的指针指向第一个字符,而非开首的字符串长度。故此适用于读取C-style 字符串的程序库同样适用于BSTR字符串(但写入则另作别论)。 字符是按照Unicode编码保存。允许在BSTR串中间嵌入NULL字符。

Windows提供了BSTR相关函数:

相关

  • D07(Antifungals for dermatological use)(Emollients and protectives)(Preparations for treatment of wounds and ulcers)(Antipruritics, including antihistamines, anesthetics,
  • 视觉暂留视觉暂留(英文:Persistence of vision)也称为正片后像,是光对视网膜所产生的视觉,在光停止作用后,仍然保留一段时间的现象,其具体应用是电影的拍摄和放映。原因是由视神经的反应速
  • 麦当劳三要素麦当劳三要素(英语:Macdonald triad),也称社会性病态三要素(英语:triad of sociopathy)或杀人三要素(英语:homicidal triad)是指一个犯罪心理学理论——虐待动物、纵火癖、(超过一定年
  • 原州机场原州机场(朝鲜语:원주공항/原州空港 Wonju Gonghang */?,IATA代码:WJU;ICAO代码:RKNW)是大韩民国江原道横城的一座空军基地,同时也是小型地方机场。虽名为原州机场,然而其所在位置却
  • 正三角形镶嵌在几何学中,正三角形镶嵌、又称为正三角方格是一种正多边形在平面上的密铺,又称正镶嵌图。康威称正三角形镶嵌为deltille。deltille一词来自于外形为三角形的希腊字母 Delta (
  • ICD-10 第十八章:症状、体征和临床与实验室异常所见R00-R09 涉及循环和呼吸系统的症状和体征R10-R19 涉及消化系统和腹部的症状和体征R20-R23 涉及皮肤和皮下组织的症状和体征R25-R29 涉及神经和肌肉骨骼系统的症状和体征R30-
  • 狒狒 (妖怪)狒狒(日语:狒々/狒狒/比々,平假名:日语:ひひ,罗马字:Hihi)为日本妖怪,日本江户时代百科全书《和汉三才图会》载狒狒在中国西南部栖息,明朝医书《本草纲目》的兽之四也有提及有关狒狒的记
  • 单位元单位元是集合里的一种特别的元素,与该集合里的二元运算有关。当单位元和其他元素结合时,并不会改变那些元素。单位元被使用在群和其他相关概念之中。设 (
  • 枝城镇枝城镇,是中华人民共和国湖北省宜昌市宜都市下辖的一个镇。 枝城镇下辖以下地区:解放社区、大同社区、洋溪社区、架锅山村、黎家坪村、水井坪村、纸坊冲村、六里冲村、钟家冲
  • A19公路A19公路、A19高速公路可以指: