VisualFreeBasic代码_字符串类型分类

2026-1-21 / 0 评论 / 53 阅读

在VB6 中,字符串就一种类型,而在 VFB 里,就有2中类型

一、ASCII编码字符串 (8位,1个字节内存大小)

电脑中的内存和文件,最小单位就是字节,1个字节是8位的2进制,因此称为 8位或1字节。1个字节的数字从 0 到 255 ,可以表示 256个字符。当然 0 表示无字符,字符就 255个。
ASCII编码字符串 以1个字节为1个文字,详细点击此链接查看
为了更好的理解它,我们称它为英文字符,后来为了可以使用中文,就搞了1个中文占用2个英文字来记录常用字,其它不常用和特殊文字,比方火星文等都会变成“?”(问号)造成文字永久丢失。
编程中代码类型

  Dim a As ZString *100  =“abc中文”
  Dim b As String        =“abc中文” 
print len(a),len(b)   '打印字符个数

打印结果:7 , 7
常用字符函数:Len Mid Left Right InStr Trim LCase UCase

二、Unicode编码字符串 (16位,2个字节内存大小)

为了更好的使用中文,以及支持全部中文字,衍生出了Unicode编码字符串,我们可以理解为中文字符,不管中文或英文,都占用2个字节内存,可以储存火星文等全系列中文。处理中文一般都推荐这个类型。
编程中代码类型(VB6使用的字符串类型,就是这个)

  Dim a As WString *100 ="abc中文"
  Dim b As StringW      ="abc中文"
print len(a),len(b)   '打印字符个数

打印结果:5 , 5
常用字符函数:LenW MidW LeftW RightW InStrW TrimW LCaseW UCaseW

三、固定长度和可变长度

  • 固定长度的字符串类型,就是先申请内存,可以最大装载多少文字。
Dim a As ZString *100
Dim a As WString *100 

其中,100 表示可以最多容纳 100个文字,但是最后 FB语言会处理成 0编码字符,表示字符结束,因此,100 就是最多可以容纳 99个文字,你给它超过 99个文字,那么超出部分就丢弃掉。
此时内存占用空间,永远都是 100 个,不管你装载几个文字都不影响内存占用。
注: 英文类型占内存是1个文字1个字节, 中文类型占内存1个文字2个字节

  • 可变长度的字符串类型,就是字符有几个,就申请多少内存。
Dim b As String
Dim b As StringW

此时最大装载文字个数,受内存限制,一般最大 1G 内存大小。

  • 二者优点和缺点
    固定长度的处理速度快,浪费内存空间
    可变长度的处理速度慢,不浪费内存空间
    比方字符拼贴:你会发现速度真的无法比。所以,可以根据自己代码需求来使用字符变量类型。
Dim i As Long 
Dim b As ZString * 100005
for i=0 To 100000           
   b = b & "a"
next 
Dim a As String 
for i=0 To 100000           
   a = a & "a"
next 
Dim bw As WString * 100005
for i=0 To 100000           
   bw = bw & "a"
next 
Dim aw As Stringw 
for i=0 To 100000           
   aw = aw & "a"
next 

四、字符串类型特殊用法

  • 字符串中某个文字的字符编码
    我们可以用以下函数
 Dim a As String ="abc" ,b As StringW ="中文字"
 Print Asc(a,1),AscW(b,1)

其中数字 1 是第几个字符
还有一个效率高的方法,用的是 中括号 [] 不是圆括号

 Dim a As String ="abc" ,b As StringW ="中文字"
 Print a[0],b[0]

数字 0 表示第1个字符,以此类推。
注意 Asc(a,1),AscW(b,1) 属于安全操作,超过字符就返回 0 ,
a[0],b[0] 是不安全操作,不可以乱来,超过字符长度,软件会崩溃。

  • String 类型不只是ASCII编码字符串
    由于 String 类型 支持 0 字符串,其它字符类型不支持,它就可以装载任何数据,而不单单是文字。String类型可以直接等同于字节数组类型
 Dim a As String 
 Dim b() As UByte 

很多时候,使用字节数组类型,写代码比较麻烦,那么使用 a As String 就方便多了。
比方函数返回,不支持数组返回,需要返回时就必须使用 a As String :

Function Myaaa() As String   '支持返回

End Function

Function Myaaa() As UByte()  '不支持数组返回,编译错 

End Function

还有一个字符编码,常用于网页:UTF8 字符编码,那么也是用 a As String
和UTF8 相互转换函数:

 Utf8toStr
 StrToUtf8
 StringWtoUtf8
 Utf8toStringW

评论一下?

OωO
取消