查看: 435  |  回复: 0
  VB6 关于chr(0)在字符串和数组中是否可以断开字符串的问题
楼主
发表于 2024年2月24日 17:17

新建From1(窗体),新建Command1(按钮CommandButton),代码:

Private Sub Command1_Click()
    Dim strA As String
    Dim bArr(10) As Byte
    Dim i As Integer
    
    strA = "A" & Chr(0) & "B"
    Debug.Print strA & " Len=" & Len(strA)
    
    bArr(i) = Asc("a")
    i = i + 1: bArr(i) = 0
    i = i + 1: bArr(i) = 0
    i = i + 1: bArr(i) = 0
    i = i + 1: bArr(i) = Asc("b")
    i = i + 1: bArr(i) = 0
    Debug.Print bArr
End Sub

运行结果:

A B Len=3
a b

结论:VB6不会因为有chr(0)就截止字符串,而C++遇到\0就截止字符串。

Chr(0)是C语言中的NULL,其实C语言的字符串就是以NULL为标志截断的,所以vb中调用API的时候,尤其是处理字符串的函数,经常要用到Chr(0)。有兴趣的同学可以去了解一下vb字符串类型所用的BSTR的数据结构。

但是chr(0)在VB中可不是null。 chr(0)在VB里可以理解成占用两个字节(1个字符)长度的占位符,这个符号可以被别的有实际输出的可显示出来的字符串代替。

chr(0)也算字符串, dim str as string str=chr(0) , 你用len(str)会等于1 用lenB(str)会等于2, 说明chr(0)这个东西是占用内存的。 但是chr(0)这个东西还有个妙用,就是可以被替换,也就是说你的str变量里全是chr(0), 那么你再给它赋值后,chr(0)占用的空间会被占用。

您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com