A
WString is a fixed-size array of wide-chars that never overflows if the size is known at compile-time. It has no descriptor, and does never resize unless it's a pointer and
Allocate/
Reallocate/
Deallocate are used directly. When the variable has a fixed
size, FreeBASIC avoids any overflow that could occur on assignment, by truncating the contents to a length of
size - 1.
The end of the string is marked by the character 0 automatically added by the FreeBASIC string handling functions, so that character must never be part of a
WString or the content will be truncated. The character 0 will be appended when the string is created, and the length will be calculated by scanning the string for the first null character.
In a
WString,
Len returns the size of the contained string and
SizeOf returns the space allocated to the
WString.
SizeOf only works if the size is known by the compiler, i.e. a fixed-size
WString variable is passed directly, not as a dereferenced pointer or a
ByRef function argument.
This type is provided for support non-Latin based alphabets. Any intrinsic string function like
Left will work with
WStrings too, as will any string operator.
Besides ASCII files with Unicode escape sequences (\u), FreeBASIC can parse UTF-8, UTF-16LE, UTF-16BE, UTF-32LE and UTF-32BE source files.
The FreeBASIC text file functions can read and write Unicode files in different encodings, provided the
Encoding is specified when the file is opened. The text is automatically converted to the internal encoding at read and converted back to the file encoding at write.
SizeOf(
WString ) returns the number of bytes used by a
WString character in the current platform.