# Escape sequences

From cppreference.com
< cpp‎ | language

Escape sequences are used to represent certain special characters within string literals and character literals.

The following escape sequences are available (extra escape sequences may be provided with implementation-defined semantics):

Escape sequence | Description | Representation
--- | --- | ---
`\'` | single quote | byte `0x27` in ASCII encoding
`\"` | double quote | byte `0x22` in ASCII encoding
`\?` | question mark | byte `0x3f` in ASCII encoding
`\\` | backslash | byte `0x5c` in ASCII encoding
`\a` | audible bell | byte `0x07` in ASCII encoding
`\b` | backspace | byte `0x08` in ASCII encoding
`\f` | form feed - new page | byte `0x0c` in ASCII encoding
`\n` | line feed - new line | byte `0x0a` in ASCII encoding
`\r` | carriage return | byte `0x0d` in ASCII encoding
`\t` | horizontal tab | byte `0x09` in ASCII encoding
`\v` | vertical tab | byte `0x0b` in ASCII encoding
`\nnn` | arbitrary octal value | byte `nnn`
`\xnn` | arbitrary hexadecimal value | byte `nn`
`\unnnn` (since C++11) | universal character name (arbitrary Unicode value); may result in several characters | code point `U+nnnn`
`\Unnnnnnnn` (since C++11) | universal character name (arbitrary Unicode value); may result in several characters | code point `U+nnnnnnnn`

### Notes

Of the octal escape sequences, `\0` is the most useful because it represents the terminating null character in null-terminated strings.

The new-line character `\n` has special meaning when used in text mode I/O: it is converted to the OS-specific newline representation, usually a byte or byte sequence. Some systems mark their lines with length fields instead.

Octal escape sequences have a limit of three octal digits, but terminate at the first character that is not a valid octal digit if encountered sooner.

Hexadecimal escape sequences have no length limit and terminate at the first character that is not a valid hexadecimal digit. If the value represented by a single hexadecimal escape sequence does not fit the range of values represented by the character type used in this string literal (char, char16_t, char32_t, or wchar_t), the result is unspecified.

A universal character name in a narrow string literal or a 16-bit string literal may map to more than one character, e.g. \U0001f34c is 4 char code units in UTF-8 (\xF0\x9F\x8D\x8C) and 2 char16_t code units in UTF-16 (\uD83C\uDF4C).

If a universal character name does not correspond to a code point in ISO/IEC 10646 (the range 0x0-0x10FFFF, inclusive) or if a universal-character-name corresponds to a surrogate code point (the range 0xD800-0xDFFF, inclusive), the program is ill-formed.

The question mark escape sequence \? is used to prevent trigraphs from being interpreted inside string literals: a string such as "??/" is compiled as "\", but if the second question mark is escaped, as in "?\?/", it becomes "??/"

### Example

Run this code

    #include <cstdio>

    int main()
    {
        std::printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n");
    }

Output:

    This
    is
    a
    test

    She said, "How are you?"

### See also

- ASCII chart

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/escape&oldid=109530"