BSTR

✍ dations ◷ 2025-12-09 01:48:12 #数据结构

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相关函数:

相关

  • 荷马荷马(Ὅμηρος,约前9世纪-前8世纪),相传为古希腊的吟游诗人,生于小亚细亚,失明,创作了史诗《伊利亚特》和《奥德赛》,两者统称《荷马史诗》。目前没有确切证据证明荷马的存在,所以
  • 电场电场是存在于电荷周围能传递电荷与电荷之间相互作用的物理场。在电荷周围总有电场存在;同时电场对场中其他电荷发生力的作用。观察者相对于电荷静止时所观察到的场称为静电场
  • 法国电视国际五台法国电视国际五台(TV5)是个全球性的法语电视网,于1984年1月首播。TV5是排名CNN及MTV及BBC World之后的第四大国际性媒体。现时随了播放国际新闻以外,还有电视剧及游戏节目,亦有电
  • 会费会费指加入会员制团体须缴纳的费用,有些会员制团体是完全靠会费运作,这类团体的会费就是定期缴纳一笔,例如联合国的会费就是定期缴纳,而有些团体则是入会时缴纳一笔即可。
  • 剑潭寺剑潭古寺,又名剑潭寺、观音寺,位于台湾台北市中山区大直北安路,原为主祀观世音菩萨之佛教寺院。1773年,剑潭古寺创建,主祀神观音佛祖,为台北盆地最古老的佛寺之一。台湾日治时期19
  • 气象卫星气象卫星是人造卫星的一种,其主要作用是观察和监视地球的气象和气候。气象卫星不只可以观察云的系统,城市灯光、火灾、大气和水污染、极光、沙暴、冰雪覆盖率、海流和能源浪费
  • 爱上北斗星男友徐璐、张铭恩、任言恺、吴昕北京爱奇艺科技有限公司 北京乐合影业文化传媒有限公司 上海儒意影视制作有限公司 北京瑞格嘉尚文化传播有限公司《爱上北斗星男友》(英语:),2019年
  • 爱德华·艾伯尔爱德华·华尔特·艾伯尔(英文:Edward Walter Eberle,1864年8月17日-1929年7月6日)海军上将,美国第三任海军作战部长。艾伯尔出生于德州丹顿市,父母为约瑟夫与玛丽·艾伯尔。艾伯尔
  • 亨利·杰克逊亨利·马丁·杰克逊(英语:Henry Martin "Scoop" Jackson;1912年5月31日-1983年9月1日)是美国政治家。曾担任华盛顿州议员和美国参议员(1953-1983)。 杰克逊是冷战时期的自由主义者
  • 埃里克·加塞蒂埃里克·迈克尔·加塞蒂(英语:Eric Michael Garcetti,1971年2月4日-)为洛杉矶现任市长。曾任洛杉矶市议会代表第13区的议员,并在2006年至2012年间担任议会主席。于2013年7月1日就