Postać dosłownie
Literał postaci jest postacią w pojedynczych cytatach. Więc,
char to ident1 = „a”; char to ident2 = 'b'; char to ident3 = „4”; char to ident4 = „6”;to wszystkie różne definicje znaków. Zauważ, że cyfra w pojedynczych cytatach jest postacią, a nie liczbą całkowitą.
Sekwencja ucieczki, taka jak \ ”(patrz poniżej) w pojedynczych cytatach, jest postacią. Więc,
char to ident1 = '"';jest postacią.
Pojedynczy symbol w podwójnych cytatach nie jest postacią; jest to ciąg jednej postaci. Tak więc „A”, „C” lub „2” nie jest postacią, ale jest ciągiem jednego znaku.
Zmienną charytatyczną można ponownie przypisać, później w programie, w następujący sposób:
char to ident = 'x';Aby powstrzymać postać przypisaną do identyfikatora przed zmianą, później w programie, poprzedzaj definicję zarezerwowanym słowem, const, w następujący sposób:
const char to ident = 'd';Zmienna, mówi się, że jest tylko odczyt.
String literal
String Literal to sekwencja znaków w podwójnych cytatach. Więc,
Char Ident1 [] = "Kocham cię"; char to ident2 [] = "Nienawidzę 3 z ciebie"; Char Ident3 []to różne definicje literałów smyczkowych. Zwróć uwagę na użycie podwójnych cytatów. Nie ma to jak zwykła zmienna dla ciągu. Literał sznurka to szereg znaków, w którym zamiast wyznaczania sekwencja jest wyznaczona „”. Znaki nie są oddzielone przez przecinki. Dowolna liczba większa niż liczba nołdek w literale sznurku można umieścić w nawiasach kwadratowych. Lepiej jednak zostawić puste nawiasy kwadratowe.
Pojedynczy znak w podwójnych cytatach nie jest postacią; jest to ciąg jednej postaci. Tak więc „A”, „C” lub „2” nie jest postacią, ale ciągiem jednego znaku.
Zmienna łańcuchowa nie umożliwia ponownego przypisania pełnego literatu, później w programie - patrz poniżej. Jednak indywidualne znaki można ponownie przypisać - patrz poniżej.
Pojedynczy i podwójny cytat w charakterze lub dosłownym
Mieć jeden cytat jako postać, zrób coś takiego,
char to ident = '\' ';Aby mieć podwójny cytat jako postać w dosłownym sznurku, zrób coś takiego,
char to ident [] = „ab” cd ”;Oprosza jest używana w sekwencji ucieczki, aby uniknąć konfliktu z ograniczeniami. Aby mieć podwójny cytat jako postać, nie ma potrzeby oporu: „” „jest w porządku. Aby mieć pojedynczy cytat w literale, nie ma potrzeby nieobecności: „ab'cd” jest w porządku.
Ponieważ opóźnienie jest używane do ucieczki z postaci, należy go uciec z kolejnym opóźnieniem, gdy jest używany jako postać lub w dosłownym sznurku.
Sekwencja ewakuacyjna
Sekwencja ucieczki jest jedna z:
\ '\? \\ \ a \ b \ f \ n \ r> \ t \ vKażda sekwencja ucieczki jest zwykle wpisywana jako znak w pojedynczych cytatach, albo jako sekwencja ucieczki w podwójnych cytatach.
Operacje z postaciami
Powiązanie
W definicji można połączyć z przestrzenią dwa literały smyczkowe:
char to identyna [] = „abc” „def”;Wyjście to: abcdef . Tę definicję można rozszerzyć na więcej niż dwa literały. Uwaga: Oświadczenie jest definicją, a nie tylko zadaniem. Definicja może nawet przejść do następnej linii z przestrzenią oddzielającą linie w następujący sposób:
char to identyna [] = „abc” „def”Wyjście to AbcDefghi.
Uwaga: znaków nie można w ten sposób połączyć, ponieważ pojedyncze cytaty dla postaci nie mogą mieć więcej niż jednego symbolu.
Operatorzy równości
Te same znaki w tym samym przypadku są równe. Nie są równi, jeśli nie są w tym samym przypadku. Rozważać,
Bool wynik = „b” == 'b';== oznacza równe, podczas gdy = oznacza przypisane i nie jest równe. Wyjście to 1 dla prawdziwego. Rozważać,
Bool wynik = „b” == 'b';Dane wyjściowe to 0 dla fałszu. Rozważać,
Bool wynik = „b” == 'c';Dane wyjściowe to 0 dla fałszu. Rozważać,
BOOL Result = „B” != 'B';!= oznacza niezrównane, podczas gdy = oznacza przypisane i nie równe. Dane wyjściowe to 0 dla fałszu. Rozważać,
BOOL Result = „B” != 'b';Wyjście to 1 dla prawdziwego. Rozważać,
BOOL Result = „B” != 'c';Wyjście to 1 dla prawdziwego.
Więc == i != są operatorami równości.
Operatorzy relacyjni
W przypadku zwykłych znaków w C ++, w kolejności rosnącej liczby pojawiają się przed wielkimi literami, które pojawiają się przed małymi literami.
Więc < will return true (1) when the left character is less than the right character. The other relational operators, , >= są podobnie wyjaśnione.
String literał jako obiekt
Tablica jest stałym wskaźnikiem na początek konkretnej sekwencji typu danych. Podobnie ciąg jest stałym wskaźnikiem do początku sekwencji znaków. Porównaj następujące definicje:
int arr [] = 3, 4, 5, 6, 7;Pierwsza tablica to szereg INT i ma pięć elementów. Druga i trzecia tablica to tablice znaków o różnych nazwach, ale ta sama liczba elementów. Druga i trzecia tablica są takie same, ale dla ich nazwisk. Zawartość tekstu drugiej tablicy jest ograniczona przez aparat ortodontyczny; Postacie są oddzielone przecinkami, a każda postać jest w pojedynczych cytatach. Treść tekstowa trzeciej tablicy jest ograniczona podwójnymi cytatami; Postacie nie są oddzielone przecinkami, a każda postać nie jest w pojedynczych cytatach. Druga i trzecia tablica to dwa sposoby tworzenia sznurka, a trzeci sposób to lepszy sposób.
ARR jest stałym wskaźnikiem do pierwszego elementu jego tablicy, co oznacza, że ARR zawsze wskazuje na lokalizację o liczbie liczby całkowitej, 3, nawet jeśli wartość 3 zostanie zmieniona. Rozmiar tablicy, pięć elementów, tak naprawdę nie pozostaje stały. Jednak każda z wartości tablicy można zmienić.
STR jest stałym wskaźnikiem do pierwszego elementu jego tablicy, co oznacza, że Str zawsze będzie wskazywał lokalizację o postaci, nawet jeśli zmieniona jest wartość „W”. Rozmiar tablicy znaków, pięć elementów, tak naprawdę nie pozostaje stały. Jednak każda z wartości literatu można zmienić.
Stri jest stałym wskaźnikiem do pierwszego elementu jego dosłownego (tablica), co oznacza, że Stri zawsze będzie wskazywać na lokalizację o postaci, W nawet jeśli wartość W zostanie zmieniona. Rozmiar literałów strunowych (tablica), pięć elementów, tak naprawdę nie pozostaje stały. Jednak każda z wartości literatu można zmodyfikować.
Co jest stałe w literaturze tablicy lub sznurku? Adres pamięci pierwszego elementu tablicy lub literału pozostaje jako wartość nazwy (identyfikatora) tablicy lub dosłowności i nie można go zmienić. Cóż, rozmiar tablicy lub literałów tak naprawdę nie pozostaje stały. Każda wartość w tablicy lub literatu można zmienić. Poniższy kod pokazuje, jak zmieniono czwarty element każdej tablicy:
int arr [] = 3, 4, 5, 6, 7;Wyjście to:
9Należy zauważyć, że elementy zdefiniowanego literału ciągów, jak w trzeciej definicji powyżej, można uzyskać do indeksu tablicy (indeks indeksu). Przyczyna drugiej linii wyjścia podano poniżej.
Definicja dolna
Zauważ, że w powyższych definicjach nie ma liczby całkowitych do indeksu indeksowego. Gdy liczby elementów nie można łatwo określić, przez programista należy pominąć liczbęl. Cokolwiek tak jest, liczba całkowita nie powinna być mniejsza niż liczba elementów w tablicy.
W przypadku literału ciągów liczba całkowita powinna być co najmniej 1 wyższa niż liczba znaków w ciągu. Wynika to z faktu, że znak zerowy (\ 0) jest zawsze dodawany przez kompilator, na końcu tablicy, która jest ciągiem, ograniczonym przez podwójne kwoty. Znak zerowy nie jest dodawany na końcu drugiej tablicy powyżej, ponieważ nie jest to oficjalny ciąg. Trzecia tablica to oficjalny ciąg. Poniższy kod pokazuje minimalne wartości indeksowe.
int arr [5] = 3, 4, 5, 6, 7;Aby druga definicja była oficjalnym ciągiem, wartość zerowa musi zostać dodana w następujący sposób:
int arr [5] = 3, 4, 5, 6, 7;Wyjście powinno być teraz,
9bez drugiego „kobiet”. Zauważ, że odpowiadający indeks dolny dla drugiej tablicy to 6, a nie 5, tak jak było.
Stałe wartości dosłowne
Aby zatrzymać jakąkolwiek postać w podwójnych cytatach przypisanych do identyfikatora z modyfikacji, później w programie, poprzedź definicję zarezerwowanym słowem, const, w następujący sposób:
const char to identyna [] = "kocham cię";Operacje z literałami smyczkowymi
Operacje równości
Operatorzy równości są == i != . Gdy porównywane są zmienne (identyfikatory) dwóch strun, to wskaźniki (adresy) literali kończą się porównywane; to jest złe. Aby porównać stringi, literały należy porównać, jak w następującym kodzie:
Bool wynik = „Woman” == „Woman”;Wyjście to 1 dla prawdziwego. Porównanie odbywa się w sposób słownika, ale z liczbami nadchodzącymi do pierwszej kolejności rosnącej, przed wielkimi literami, które pojawiają się przed małymi literami. Wyjście następującego kodu to 0, dla False.
Bool wynik = „kobieta” != „kobieta”;Operatorzy relacyjni z literałami smyczkowymi
Operatorzy relacyjne nie pracują z literałami smyczkowymi.
Surowy literał
Surowy literał, pozwala na wyświetlanie sznurka jako wpisane, ignorując sekwencje ucieczki i szanowanie nowych linii. Rozważ następujący kod:
char str [] = r "(abc \\ d efg hijWyjście to:
abc \\ d efg hijW kodzie surowy literał ciągów zaczyna się od r, a następnie ”i ( . To się kończy) i „.
C ++ główne typy sznurka
zwęglać
Typ char to oryginalny typ C ++ i zazwyczaj przechowywałby znak w 8 bitach.
char16_t
To przechowuje postać w 16 bitach.
char32_t
To przechowuje postać w 32 bitach.
wchar_t
char16_t i char32_t to szerokie znaki. WChar_t to szerokie znak, który jest zastrzeżony i zdefiniowany przez implementację.
Wniosek
Literał postaci to pojedynczy znak w pojedynczych cytatach. Sekwencja ucieczki to postać, która może być również w pojedynczych cytatach. Literał sznurka to sekwencja znaków w podwójnych cytatach. Literał sznurka to szereg znaków, które kończą się \ 0. Operatorzy równości i relacyjni pracują z literałami postaciami. Operatorzy równości pracują z literałami smyczkowymi, ale operatorzy relacyjni nie pracują z literałami smyczkowymi. Identyfikatory znaków mogą być używane w porównaniach, ale identyfikatory ciągów nie należy stosować w porównaniach. Surowy literał straszy umożliwia wyświetlanie ciągu jako wpisywania, ignorując sekwencje ucieczki i szanowanie nowych linii.