logo search
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.2.5.4 Строки литералов

Строка литералов есть последовательность символов (как они определены

в $$R.2.5.2), заключенная в двойные кавычки, т.е. "...". Строка

имеет тип "массив символов" и класс памяти static ($$R.3.5), она

инициализируется заданными символами. Будут ли все строки различны

(т.е. хранится в отдельных объектах), определяется реализацией.

Соседние строки литералов конкатенируются. Символы в строках,

полученных при конкатенации, хранятся отдельно. Например, после

конкатенации

"\xA" "B"

строка будет содержать два символа '\xA' и 'B' (а не один

шестнадцатеричный символ '\xAB').

После всех необходимых конкатенаций к строке добавляется

символ '\0', чтобы программа, читающая строку, могла определить

ее конец. Размер строки равен числу всех ее символов, включая

символ завершитель строки. Внутри строки перед символом двойной

кавычки " должен идти символ \.

Строка литералов, перед которой непосредственно идет символ L,

считается широкосимвольной строкой, например, L"asdf". Такая

строка имеет тип "массив элементов типа wchar_t", где wchar_t

целочисленный тип, определенный в стандартном заголовочном файле

<stddef.h>. Результат конкатенации обычных и широкосимвольных

строк литералов неопределен.