Строковые литералы

Строковые литералы существуют для того, чтобы задать какое-либо строковое значение в Ü программе. Задаются литералы с использованием "" кавычек.

"simple string"
"в строке может встречаться почти любой юникод"

Для задания некоторых символов в строке используется экранирование.

"\b возврат"
"\t табуляция"
"\n перенос строки"
"\r возврат каретки"
"\f смена страницы"
"\" кавычка"
"\\ обратный slash"
"\0 бинарный ноль"

Также можно задавать код символа, используя его четырёхзначный шестнадцатеричный номер:

"\u0000 ноль"
"\u00DC Ü"
"\u0068 h"

Тип строкового литерала

Строковый литерал имеет тип массива элементов одного из символьных типов - char8, char16 или char32. Размер массива определяется размером литерала. Тип элемента по умолчанию равен char8, конкретнее тип можно указать с использованием суффикса типа - u8 для char8, u16 для char16, u32 для char32. u8 обозначает кодировку UTF-8, u16 - UTF-16, u32 - UTF-32.

"abc абв"u8 // UTF-8 строка, тип элемента массива - "char8"
"abc абв"u16 // UTF-16 строка, тип элемента массива - "char16"
"abc абв"u32 // UTF-32 строка, тип элемента массива - "char32"

О завершающем нуле

В отличии от C, C++ и ряда других языков, в Ü строковые литералы не завершаются неявно нулём. Если завершающий нуль нужен, например для взаимодействия с C кодом, его следует явно указать через \0 в конце литерала.

"/etc/shadow" // Нету завершающего ноля, размер строки - 11
"/etc/shadow\0" // Есть завершающий ноль, размер строки - 12
"" // Нету завершающего ноля, размер строки - 0
"\0" // Есть завершающий ноль, размер строки - 1

Литералы для задания одного символа

Строковый литерал задаёт массив символов. Если же надо задать литерал для одного символа, следует объявить литерал с одним из символьных суффиксов - c8, c16, c32 или же с указанием полного имени символьного типа в качестве суффикса - char8, char16, char32.

"Q"c8 // char8
"~"char8 // char8
"Ё"c16 // char16
"й"char16 // char16
"\u00DC"c32 // char32
"ß"char32 // char32