BSTR

✍ dations ◷ 2025-12-06 01:06:40 #数据结构

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

相关

  • 中心静脉导管中心静脉导管(central venous catheter, CVC)属于血管内管的一种,放置于大静脉中。常置入之大静脉包括有:全血 · PF24/新鲜冷冻血浆 (冷上清制剂 + 冷沈淀制剂)基于血红蛋白的
  • 约翰·肯德鲁约翰·肯德鲁爵士,CBE,FRS(英语:Sir John Kendrew,1917年3月24日-1997年8月23日),英国生物学家,1962年获诺贝尔化学奖。1917年出生于英国牛津。1901年:范托夫 | 1902年:费歇尔 | 1903年
  • 芭黎丝·希尔顿帕丽斯·惠妮·希尔顿(英语:Paris Whitney Hilton,1981年2月17日-,又译派瑞丝·希尔顿)是美国名媛、电视名人、歌手、女演员和模特儿,也是著名希尔顿酒店集团继承人之一。2003年,帕
  • 效应效果,或效应,是指在有限环境下,一些因素和一些结果而构成的一种因果现象,多用于对一种自然现象和社会现象的描述,效应一词使用的泛围较广,并不一定指严格的科学定理、定律中的因果
  • 钼酸钠钼酸钠是钠的钼酸盐,化学式Na2MoO4,为白色菱形结晶体。通过钼精矿氧化焙烧生成三氧化钼,用液碱浸取生成钼酸钠溶液,后经抽滤、浓缩、冷却、离心、干燥后可制得。钼酸钠可溶于水,
  • 机械制造机械制造(Mechanical Manufacturing)是机械工程的重要组成部分,指运用机械来从事各种制造的工作,由机械设计、机械制图和机械加工组成。另外,机械制造还可能需要电脑辅助制造系统
  • 伍德福德 (南卡罗来纳州)伍德福德(英文:Woodford),是美国南卡罗来纳州下属的一座城市。城市类型是“Town”。其面积大约为0.79平方英里(2.03平方公里)。根据2010年美国人口普查,该市有人口185人,人口密度约
  • 桑原一世桑原一世(桑原一世,くわばら いしよ)是一位日本作家桑原一世著有《クロス・ロード》(Crossroad,十字路口)与《最后の王様》等。
  • 麦可·怀特麦可·怀特(英语:Michael White,1959年2月16日-2018年2月6日)是一位英国作家和流行音乐家,著有43本书籍,包括J·R·R·托尔金、C·S·路易斯、史蒂芬·霍金、艾萨克·牛顿、列奥那
  • 干洗澡干洗澡(英语:Drybath)是由南非的路迪克·马利珊(Ludwick Marishane)发明的一种杀菌凝胶,只要将凝胶抹在身上后再擦拭即可清洁身体,几乎无须用水。该发明能造福饱受缺水之苦的人们亦