标准数据类型:宽字符串
语法
说明
这个
WString是固定大小的宽字符数组,如果在编译时已知大小,则该字符串将永远不会溢出。它没有描述符,除非它是一个指针,否则直接使用
Allocate/
Reallocate/
Deallocate.当变量具有固定的
size 时,FreeBASIC通过将内容截断长度为
size - 1来避免赋值时可能发生的任何溢出。
字符串的末尾由FreeBASIC字符串处理函数自动添加的字符0标记,以使字符永远不会成为
WString的一部分,否则内容将被截断。当字符串创建时,字符0将被追加,长度将通过扫描第一个空字符的字符串来计算。
在
WString中,
Len返回包含字符串的大小,
SizeOf返回赋值给
WString的空间。
SizeOf只有当编译器知道大小时才有效,即直接传递固定大小的
WString变量,而不是作为取消引用的指针或
ByRef函数参数。
此类型用于支持非拉丁语字母。任何内在的字符串函数,如
Left也可以与
WString一起使用,任何字符串操作符也可以使用。
除了具有Unicode转义序列(\\ u)的ASCII文件,FreeBASIC可以解析UTF-8,UTF-16LE,UTF-16BE,UTF-32LE和UTF-32BE源文件。
FreeBASIC文本文件功能可以以不同的编码读取和写入Unicode文件,前提是打开文件时指定了
Encoding.文本被自动转换为读取的内部编码,并在写入时转换回文件编码。
SizeOf(
WString)返回当前平台中
WString个字符使用的字节数。
例子
Dim As WString * 13 str1 => "你好,世界"
Print str1
Print Len(str1) '返回12,它包含的字符串的长度
Print SizeOf(str1) '返回13 * sizeof(wstring),变量使用的字节数
Dim As WString Ptr str2
str2 = Allocate( 13 * Len(WString) )
*str2 = "你好,世界"
Print *str2
Print Len(*str2) '返回12,它指向的字符串的长度
平台差异
支持wstrings依赖于平台中可用的C运行时库,内部格式可能会有所不同。
- FreeBASIC的DOS端口不支持Unicode。在这个端口中,一个字符总是占用1个字节,Wstrings将作为标准ASCII Zstrings
- 在Win32 wstrings以UCS-2(UTF-16 LE)编码,一个字符占用2个字节。
- 在Linux上,wstrings被编码在UCS-4中,一个字符占用了4个字节。
方言差异
与QB差别
参考