非c字符串,比如VB里用的BSTR字符串就不是这样的。当你在VB里声明了一个String型的变量,比如:Dim str1 As String。这个Str1本身其实是一个指针,指向的是实际字符串的缓冲区开始地址,这个开始地址前面4字节里存放的是这个缓冲区的长度,单位为字节。由于有长度前缀,所以可以包含'\0'在内的字符串,因为它并不需要用'\0'来判断字符串的结束。
[/Quote]
非c字符串,比如VB里用的BSTR字符串就不是这样的。当你在VB里声明了一个String型的变量,比如:Dim str1 As String。这个Str1本身其实是一个指针,指向的是实际字符串的缓冲区开始地址,这个开始地址前面4字节里存放的是这个缓冲区的长度,单位为字节。由于有长度前缀,所以可以包含'\0'在内的字符串,因为它并不需要用'\0'来判断字符串的结束。