cpp/language/string literal

Explanation
@1@ Ordinary string literal. The type of an unprefixed string literal is, where is the size of the string in code units of the , including the null terminator. @2@ Wide string literal. The type of a string literal is, where  is the size of the string in code units of the , including the null terminator. @3@ UTF-8 string literal. The type of a string literal is, where  is the size of the string in UTF-8 code units including the null terminator. @4@ UTF-16 string literal. The type of a string literal is, where  is the size of the string in UTF-16 code units including the null terminator. @5@ UTF-32 string literal. The type of a string literal is, where  is the size of the string in UTF-32 code units including the null terminator. @6@ Raw string literal. Used to avoid escaping of any character. Anything between the delimiters becomes part of the string. , if present, has the same meaning as described above. The terminating is the same sequence of characters as the initial.

Each (originally from non-raw string literals)  initializes the corresponding element(s) in the string literal object. An  corresponds to more than one element if and only if it is represented by a sequence of more than one code units in the string literal's associated character encoding.

Each numeric escape sequence corresponds to a single element.

Concatenation
String literals placed side-by-side are concatenated at (after the preprocessor). That is, yields the (single) string. If the two strings have the same encoding prefix (or neither has one), the resulting string will have the same encoding prefix (or no prefix).