簡単な質問があります。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
が、上で示したように、そうではありません。