explicitly express that it is at least the size needed to store an eight-bit coding of UTF-8, and large enough to contain any member of the compiler's basic execution character set. It was formerly defined as only the latter in the C++ standard itself, then relying on the C standard to guarantee at least 8 bits. Furthermore, C++11 adds two new character types: char16_t and char32_t. These are designed to store UTF-16 and UTF-32 respectively. Creating string literals for each of the supported encodings can be done thus: u8"I'm a UTF-8 string." u"This is a UTF-16 string." U"This is a UTF-32 string." The type of the first string is the usual const char[]. The type of the second string is const char16_t[] (note lower case 'u' prefix). The type of the third string is const char32_t[] (upper case 'U' prefix). When building Unicode string literals, it is often useful to insert Unicode code points directly into the string. To do this, C++11 allows this syntax: u8"This is a Unicode Character: \u2018." u"This is a bigger Unicode Character: \u2018." U"This is a Unicode Character: \U00002018." The number after the \u is a hexadecimal number; it does not need the usual 0x prefix. The identifier \u represents a 16-bit Unicode code point; to enter a 32-bit code point, use \U and a 32-bit hexadecimal number. Only valid Unicode code points can be entered. For example, code points on the range U+D800–U+DFFF are forbidden, as they are reserved for surrogate pairs in UTF-16 encodings. It is also sometimes useful to avoid escaping strings manually, particularly for using literals of XML files, scripting languages, or regular expressions. C++11 provides a raw string literal: R"(The String Data \ Stuff " )" R"delimiter(The String Data \ Stuff " )delimiter" In the first case, everything between the "( and the )" is part of the string. The " and \ characters do not need to be escaped. In the second case, the "delimiter( starts the string, and it ends only when )delimiter" is reached. The string delimiter can be any string up to 16 characters in length, including the empty string. This string cannot contain spaces, control characters, (, ), or the \ character. Using this delimiter string, the user can have ) characters within raw string literals. For example, R"delimiter((a-z))delimiter" is equivalent to "(a-z)". Raw string literals can be combined with the wide literal or any