Jak używać literału ciągów C ++

Jak używać literału ciągów C ++
Klawiatura komputerowa ma na nich wydrukowane znaki. Po naciśnięciu klawisza widzisz znak na ekranie. Uwaga: Przestrzeń jest również postacią. Literał smyczkowy to sekwencja znaków. W tym artykule wyjaśniono, jak używać literałów ciągów C ++. Powinieneś wiedzieć o tablicach i wskaźnikach C ++, aby zrozumieć ten artykuł.

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';
identyfikator = „y”;

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 []
= „Jesteśmy światem”; Char Ident4 [] = "Hello World!";

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 \ v

Każda sekwencja ucieczki jest zwykle wpisywana jako znak w pojedynczych cytatach, albo jako sekwencja ucieczki w podwójnych cytatach.

  • \ ': jest używany jako znak pojedynczego cytatu, w ramach pojedynczych cytatów.
  • \ ”: Jest używany jako postać z podwójnym cytatem, w dosłownym.
  • \? : od ? jest postać zarezerwowaną, należy go uciec w dosłownie.
  • \\: Powrót należy uciec jako postać lub w dosłownym sznurku, aby nie skutkować innym.
  • \ A: Brzmi dzwonek alarmowy raz, gdy jest używany jako postać lub w literale sznurku.
  • \ B: Wyniki jako backspace na wyświetlaczu w literale sznurku, zdejmując poprzednią postać.
  • \ f: powoduje, że następna strona jest przekazywana do drukarki, gdy jest używana jako postać lub w dosłownym.
  • \ r: Zwraca kursor, w którym następny znak ma zostać wydrukowany, ale w bieżącej linii.
  • \ n: Zwraca kursor na początek następnego wiersza lub po prostu do następnego wiersza, w zależności od systemu operacyjnego.
  • \ t: tworzy zakładkę poziomą.
  • \ V: tworzy kartę pionową.

Operacje z postaciami

Powiązanie

W definicji można połączyć z przestrzenią dwa literały smyczkowe:

char to identyna [] = „abc” „def”;
Cout << ident << "\n";

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”
„Ghi”;
Cout << ident << "\n";

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';
Cout << result << "\n";

== oznacza równe, podczas gdy = oznacza przypisane i nie jest równe. Wyjście to 1 dla prawdziwego. Rozważać,

Bool wynik = „b” == 'b';
Cout << result << "\n";

Dane wyjściowe to 0 dla fałszu. Rozważać,

Bool wynik = „b” == 'c';
Cout << result << "\n";

Dane wyjściowe to 0 dla fałszu. Rozważać,

BOOL Result = „B” != 'B';
Cout << result << "\n";

!= 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';
Cout << result << "\n";

Wyjście to 1 dla prawdziwego. Rozważać,

BOOL Result = „B” != 'c';
Cout << result << "\n";

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;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = „kobieta”;

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;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = „kobieta”;
ARR [3] = 9;
str [3] = „e”;
stri [3] = „e”;
Cout << arr[3] << '\n';
Cout << str << '\n';
Cout << stri << '\n';

Wyjście to:

9
kobiety kobiety
kobiety

Należ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;
char str [5] = „w”, „o”, „m”, „a”, 'n';
char stri [6] = „kobieta”;

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;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = „kobieta”;

Wyjście powinno być teraz,

9
kobiety
kobiety

bez 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”;
Cout << result << '\n';

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”;
Cout << result << '\n';

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 hij
klmn \ n "'opq
rst) ”;
Cout << str << '\n';

Wyjście to:

abc \\ d efg hij
klmn \ n "'opq
RST

W 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.