我有一个简单的问题:vb.net 如何确定字符串长度并处理字符串的终止?
我知道在 C
(及其系列)中,空字符是字符串的结尾。在 vb6 中空字符对字符串的终止没有影响,但在 vb.net 中它似乎是模糊的!
假设这段代码在 vb6 中:
Private Sub Command1_Click()
Dim Str As String
Str = "Death is a good user," & Chr(0) & " Yes I'm good"
RichTextBox1.Text = Str
RichTextBox1.Text = RichTextBox1.Text & vbNewLine & Len(Str)
End Sub
当这段代码运行时会发生什么:没关系。这是
C
中的类似代码:#include "stdafx.h"
#include <string.h>
int main(int argc, char* argv[])
{
char *p="Death is a good user,\0 Yes I'm good";
printf("String:%s\nString length:%d\n",p,strlen(p));
return 0;
}
这就是发生的事情:根据
C
规则,这也很好,但这里是 vb.net 中的相同代码:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str As String = "Death is a good user," & Chr(0) & " Yes I'm good"
RichTextBox1.Text = str
RichTextBox1.Text &= vbNewLine & str.Length
End Sub
会发生什么:这似乎不太对!
编辑 1 :写入文件似乎是正确的:
编辑 2 :Mark 和 tcarvin 建议,这可能是 UI 的问题,但它没有解释为什么 vb6 显示整个字符串!
编辑 3 :我知道 Windows 及其 API、UI、... 是用
C
编写的,所以它们像 C
一样使用react是正常的,但正如我上面所展示的,它们没有。
最佳答案
底层运行时支持库在您的代码段中使用了 3 种不同的字符串类型:
在所有三种情况下,底层运行时支持库都需要使用互操作来使字符串可见:
关于vb.net - 在 vb.net 中嵌入空值的字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594248/