WString
 
Стандартный тип данных: строка расширенных символов

Синтаксис

Dim variable As WString * size
Dim variable As WString Ptr

Описание

WString является массивом фиксированного размера расширенных символов, который никогда не переполняется, если размер известен во время компиляции. Он не имеет дескриптора, и  никогда не изменяется в размере, если это не указатель и Allocate/Reallocate/Deallocate не используются для него.

Конец строки отмечен символом 0, так что символ нуля не должен быть частью WString или содержимое будет усечено.

Этот тип предоставляется для поддержки нелатинских алфавитов. Любые функции для встроенных строк, такие как Left будут работать с WString также, как и любой строковой оператор.

Кроме файлов ASCII с Unicode escape-последовательностью (\u), FreeBASIC может разобрать UTF-8, UTF-16LE, UTF-16BE, UTF-32LE и UTF-32BE исходные файлы.

В FreeBASIC функции текстовых файлов могут читать и записывать файлы Unicode в различных кодировках, при условии, что Encoding задается при открытии файла. Текст автоматически преобразуется во внутреннюю кодировку при чтении и преобразуется обратно в кодировку файла при записи.

SizeOf( WString ) возвращает количество байт, используемых WString символами в текущей платформе.

Пример

Dim As WString * 14 str1 => "hello, world"
Print str1
Print Len(str1)    'Возвращает 12, длину содержащей строки 
Print SizeOf(str1) 'Возвращает 14 * sizeof(wstring), число байт, используемых в переменной


Dim As WString Ptr str2
str2 = Allocate( 14 * Len(WString) )
*str2 = "hello, world"
Print *str2
Print Len(*str2)      'Возвращает 12, длину содержащей строки


Различия платформ

Поддержка wstrings полагается в библиотеке RinTime C, доступная в платформе, и внутренний формат может измениться.
    • Unicode не поддерживается в версии DOS FreeBASIC. В этой версии символ всегда занимает 1 байт и Wstrings будет вести себя как стандартная ASCII Zstrings
    • На Win32 wstrings закодированы в UCS-2 (UTF-16 LE) и символ занимает 2 байта.
    • На Linux wstrings закодированы в UCS-4, и символ занимает 4 байта.

Различия диалектов

  • Нет в наличии в диалекте -lang qb , но есть псевдоним __Wstring.

Отличие от QB

  • Новое в FreeBASIC

См. также