Stałe znaków języka C++
Stałe znaków są jeden lub więcej członków zestaw znaków podstawowe źródło, zestaw znaków w którym program jest zapisywany, ujęty w znaki cudzysłowu pojedynczego (').Są one używane do reprezentowania znaków w zestaw znaków wykonywanie podstawowych, zestaw znaków na komputerze, gdy program jest wykonywany.
Programu Microsoft
Znak kompilatora, źródła i wykonanie Microsoft C/C++ zestawy są zarówno ASCII.
Zestaw znaków podstawowe źródło składa się ze znaków 96: spacja; znaki kontrolne, reprezentujące tabulator poziomy, tabulacji pionowej, wysuwu strony i nowego wiersza; i 91 następujących znaków:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
_{}[]#()<>%:;.?*+-/^&|~!=,\"'
Wykonanie podstawowego zestawu znaków składa się znaki w zestawie znaków podstawowe źródło i znaków kontrolnych, które reprezentują alert, backspace, znak powrotu karetki i null.
KONIEC Microsoft szczególne
Istnieją trzy rodzaje stałych znaków:
Normalne znaki stałe
Stałe multicharacter
Stałe szerokich znaków
[!UWAGA]
Używać stałych szerokich znaków, zamiast stałych multicharacter do zapewnienia przenośności.
Znak stałe są określone jako jeden lub więcej znaków ujęty w znaki cudzysłowu pojedynczego.Na przykład:
char ch = 'x'; // Specify normal character constant.
int mbch = 'ab'; // Specify system-dependent
// multicharacter constant.
wchar_t wcch = L'ab'; // Specify wide-character constant.
Należy zauważyć, że mbch jest typu int.Jeśli zostały zgłoszone jako typ char, drugi bajt nie będzie zachowane.Stała multicharacter składa się z czterech znaków znaczące; Określając więcej niż cztery generuje komunikat o błędzie.
Znaki wewnątrz stała znakowa mogą być wszystkie znaki graficzne źródłowego zestawu znaków, z wyjątkiem dla nowego wiersza, ukośnik odwrotny \, pojedynczy cudzysłów "i podwójny cudzysłów", lub może być podana, przy użyciu sekwencji unikowej.Istnieją trzy typy sekwencje unikowe: sekwencji unikowych proste, ósemkowym i szesnastkowej.
Sekwencje unikowe proste może być dowolną z następujących czynności:
\' \" \? \\
\a \b \f \n \r \t \v
Sekwencji unikowej ósemkową jest ukośnikiem odwrotnym i przez sekwencję do 3 cyfr ósemkowym.
Szesnastkową sekwencję anulowania jest odwróconą, a po nim znak x, a po nim sekwencję znaków szesnastkowych.
Microsoft C++ obsługuje normalny, multicharacter i stałe szerokich znaków.Umożliwia określenie członków zestawu (na przykład do obsługi aplikacji międzynarodowych) znaków rozszerzonych wykonanie przez stałe szerokich znaków.Stałe normalne znaki mają typ char, multicharacter stałe mają typ int, i stałe szerokich znaków mają typ wchar_t.(Typ wchar_t jest zdefiniowany w standardowych plików STDDEF.H, STDLIB.H i ciąg znaków.H.Funkcje szerokich znaków, są jednak zdefiniowała tylko w STDLIB.H.)
Jedyna różnica w specyfikacji między stałymi normalnych i szerokich znaków jest, że stałe szerokich znaków są poprzedzone literą L.Na przykład:
char schar = 'x'; // Normal character constant
wchar_t wchar = L'\x8119'; // Wide-character constant
W poniższej tabeli przedstawiono zarezerwowane lub nongraphic znaków, które są systemowe zależne lub nie jest dozwolone w obrębie stałych znaków.Znaki te powinny być reprezentowane w sekwencje escape.
Zarezerwowane w języku C++ lub Nongraphic znaków
Znak |
ASCII Reprezentacja |
ASCII Wartość |
Sekwencja unikowa |
---|---|---|---|
Nowy wiersz |
NL (LF) |
10 lub 0x0a |
\n |
Tabulator poziomy |
HT |
9 |
\t |
Tabulacji pionowej |
VT |
11 lub 0x0b |
\v |
BACKSPACE |
BS |
8 |
\b |
Powrót karetki |
CR |
13 lub 0x0d |
\r |
Wysuwu strony |
FF |
12 lub 0x0c |
\f |
Alert |
BEL |
7 |
\a |
Kreska ułamkowa odwrócona |
\ |
92 lub 0x5c |
\\ |
Znak zapytania |
? |
63 lub 0x3f |
\? |
Pojedynczy cudzysłów |
' |
39 lub 0x27 |
\' |
Podwójny cudzysłów. |
" |
34 lub 0x22 |
\" |
Liczbę ósemkową |
ooo |
— |
\ooo |
Liczba szesnastkowa |
hhh |
— |
\xhhh |
Znak NULL |
NUL |
0 |
\0 |
Jeśli znaku odwróconej kreski ukośnej nie określono sekwencji escape prawnych, wynik jest wdrożenie zdefiniowane.W Microsoft C++ znaku odwróconej kreski ukośnej jest dosłownie, tak jakby escape nie byli obecni i ostrzeżenie poziomu 1 ("Nierozpoznany znak sekwencji unikowej").
Sekwencje unikowe ósemkową, określony w formie \ooo, składają się z ukośnikiem odwrotnym i jednego, dwóch lub trzech znaków ósemkowych.Sekwencje unikowe szesnastkowym, określone w \x formularzahhh, składają się ze znaków \x następuje sekwencja cyfr szesnastkowych.W przeciwieństwie do stałych ósemkową escape brak limitu liczby cyfr szesnastkowych w sekwencji unikowej.
Sekwencje unikowe ósemkową są zakończone według pierwszego znaku, który nie jest cyfrą ósemkową, lub gdy trzy znaki są widoczne.Na przykład:
wchar_t och = L'\076a'; // Sequence terminates at a
char ch = '\233'; // Sequence terminates after 3 characters
Podobnie sekwencje unikowe szesnastkowym kończy się pierwszy znak, który nie jest cyfrą szesnastkową.Ponieważ cyfry szesnastkowe zawierają litery a przez f (i A poprzez F), upewnij się, sekwencji unikowej kończy się na zamierzone cyfra.
Ponieważ znak cudzysłowu pojedynczego (') umieszcza znak stałych, użyć sekwencji unikowej \' do reprezentowania ujęty w znaki cudzysłowu pojedynczego.Podwójny cudzysłów (") mogą być reprezentowane bez sekwencji unikowej.Znak odwróconej kreski ułamkowej (\) jest znak kontynuacji wiersza umieszczane na końcu wiersza.Jeśli znak odwróconej kreski ułamkowej ma się pojawiać wewnątrz stała znakowa musi wpisz dwa ukośniki odwrotne w wierszu (\\).(Zobacz Etapów translacji w Odniesienia preprocesora uzyskać więcej informacji o kontynuacji wiersza.)