string literal
From cppreference.com
Contents |
Syntax
" (unescaped_character|escaped_character)* "
|
(1) | ||||||||
L " (unescaped_character|escaped_character)* "
|
(2) | ||||||||
u8 " (unescaped_character|escaped_character)* "
|
(3) | (since C++11) | |||||||
u " (unescaped_character|escaped_character)* "
|
(4) | (since C++11) | |||||||
U " (unescaped_character|escaped_character)* "
|
(5) | (since C++11) | |||||||
prefix(optional) R "delimiter( raw_character* )delimiter"
|
(6) | (since C++11) | |||||||
Explanation
| unescaped_character | - | Any valid character |
| escaped_character | - | See escape sequences |
| prefix | - | One of L, u8, u, U
|
| delimiter | - | A string made of any source character but parentheses, backslash and spaces (can be empty) |
| raw_character | - | Must not contain the closing sequence )delimiter"
|
1) Narrow multibyte string literal. The type of an unprefixed string literal is const char[]
2) Wide string literal. The type of a L"..." string literal is const wchar_t[]
3) UTF-8 encoded string literal. The type of a u8"..." string literal is const char[]
4) UTF-16 encoded string literal. The type of a u"..." string literal is const char16_t[]
5) UTF-32 encoded string literal. The type of a U"..." string literal is const char32_t[]
6) Raw string literal. Used to avoid escaping of any character, anything between the delimiters becomes part of the string, if prefix is present has the same meaning as described above.
Notes
- String literals can be concatenated
- The null character ('\0', L'\0', char16_t(), etc) is always appended to the string literal: thus, a string literal "Hello" is a const char[6] holding the characters 'H', 'e', 'l', 'l', 'o', and '\0'.
- String literals can be used to initialize character arrays.
| This section is incomplete Reason: static duration, (non)equality of addresses, obsolete rule about non-const char* |
Example
char array[] = "Foo" "bar"; // same as char array[] = { 'F', 'o', 'o', 'b', 'a', 'r', '\0' }; const char* s1 = R"foo( Hello World )foo"; //same as const char s2 = "\nHello\nWorld\n";