新建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)占用的空间会被占用。