C ++

Kako uporabljati C ++ String Literal

Kako uporabljati C ++ String Literal
Na računalniški tipkovnici so natisnjeni znaki. Ko pritisnete tipko, na zaslonu vidite znak. Opomba: presledek je tudi znak. Niz literal je zaporedje znakov. V tem članku je razloženo, kako uporabljati nizne literale C ++. Za razumevanje tega članka bi morali vedeti polja in kazalce C ++.

Znak dobesedno

Znakovni dobesedni znak je znak v enojnih narekovajih. Torej,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

so vse različne opredelitve znakov. Upoštevajte, da je številka v enojnih narekovajih znak in ne celo število.

Ubežno zaporedje, kot je \ ”(glej spodaj) v enojnih narekovajih, je znak. Torej,

char ident1 = '"';

je lik.

Posamezen simbol v dvojnih narekovajih ni znak; je niz enega znaka. Torej "A" ali "c" ali "2" ni znak, temveč je niz po en znak.

Spremenljivko char lahko kasneje v programu dodelite na naslednji način:

char ident = 'x';
ident = 'Y';

Če želite ustaviti spreminjanje znaka, dodeljenega identifikatorju, se pozneje v programu pred definicijo pred rezervirano besedo const ustavite, kot sledi:

const char ident = 'd';

Spremenljivka ident naj bi bila samo za branje.

String Literal

Niz nizov je zaporedje znakov v dvojnih narekovajih. Torej,

char ident1 [] = "ljubim te"; char ident2 [] = "Sovražim 3 od vas"; char ident3 []
= "mi smo svet"; char ident4 [] = "Pozdravljeni, svet!";

so vse različne definicije nizovnih literal. Upoštevajte uporabo dvojnih narekovajev. Za niz ni nič drugega kot običajna spremenljivka. Niz literala je niz znakov, pri čemer je zaporedje namesto z razmejljeno z “”. Znaki niso ločeni z vejicami. Vsako število, večje od števila znakov v dobesednem nizu, je mogoče postaviti v oglate oklepaje. Vendar je bolje, da pustite oglate oklepaje prazne.

Posamezen znak v dvojnih narekovajih ni znak; je niz enega znaka. Torej "A" ali "c" ali "2" ni znak, temveč niz po en znak.

Spremenljivka niza ne omogoča ponovne dodelitve celotne dobesedne besede, pozneje v programu - glejte spodaj. Posamezne znake pa je mogoče ponovno dodeliti - glej spodaj.

Enojni in dvojni citat v znaku ali dobesednem besedilu

Če želite imeti en citat kot lik, naredite nekaj podobnega,

char ident = '\' ';

Če želite imeti dvojni narekovaj kot znak v doslovni literali, naredite nekaj takega,

char ident [] = "ab" cd ";

Poševnica nazaj se uporablja v ubežnem zaporedju, da se prepreči konflikt z ločili. Če želite imeti dvojni narekovaj kot znak, poševna črta ni potrebna: '' 'je v redu. Če želite imeti en narekovaj v dobesednem nizu, poševnica nazaj ni potrebna: "ab'cd" je v redu.

Ker se poševnica nazaj uporablja za pobeg pred znakom, jo ​​je treba ubežati z drugo poševnico, kadar se uporablja kot znak ali v dobesednem nizu.

Zaporedje pobega

Zaporedje pobega je eno od:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ v

Vsako ubežno zaporedje je običajno vneseno bodisi kot znak znotraj enojnih narekovajev bodisi kot ubežno zaporedje znotraj dvojnih narekovajev.

Operacije z znaki

Združevanje

Po definiciji je mogoče dve nizni literali združiti s presledkom, kot sledi:

char ident [] = "abc" "def";
cout << ident << "\n";

Rezultat je: abcdef . To definicijo lahko razširimo na več kot dve dobesedni črki. Opomba: stavek je definicija, ne le dodelitev. Definicija se lahko nadaljuje celo do naslednje vrstice s presledkom, ki ločuje vrstice, kot sledi:

char ident [] = "abc" "def"
"ghi";
cout << ident << "\n";

Rezultat je, abcdefghi.

Opomba: Znakov na ta način ni mogoče povezati, saj posamezne narekovaje za znak ne morejo imeti več kot enega simbola.

Izvajalci enakosti

Isti znaki v istem primeru so enaki. Niso enaki, če niso isti primeri. Razmislite,

bool rezultat = 'B' == 'B';
cout << result << "\n";

== pomeni enako, medtem ko = pomeni dodeljeno in ne enako. Izhod je 1 za true. Razmislite,

rezultat bool = 'B' == 'b';
cout << result << "\n";

Izhod je 0 za false. Razmislite,

rezultat bool = 'b' == 'c';
cout << result << "\n";

Izhod je 0 za false. Razmislite,

bool rezultat = 'B' != 'B';
cout << result << "\n";

!= pomeni neenako, medtem ko = pomeni dodeljeno in neenako. Izhod je 0 za false. Razmislite,

bool rezultat = 'B' != 'b';
cout << result << "\n";

Izhod je 1 za true. Razmislite,

bool rezultat = 'b' != 'c';
cout << result << "\n";

Izhod je 1 za true.

Torej, == in != so operatorji enakosti.

Relacijski operaterji

Za navadne znake v jeziku C ++ so v naraščajočem vrstnem redu številke pred velikimi črkami, ki so pred malimi črkami.

Torej < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = so podobno razloženi.

Stralno dobesedno kot predmet

Matrika je stalni kazalec na začetek določenega zaporedja podatkovnih vrst. Podobno je niz konstanten kazalec na začetek zaporedja znakov. Primerjajte naslednje definicije:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "ženska";

Prvo polje je polje intov in ima pet elementov. Drugi in tretji niz so nizi znakov z različnimi imeni, vendar z enakim številom elementov. Drugi in tretji niz sta enaka, vendar za svoja imena. Besedilo druge matrike je omejeno z oklepaji; znaki so ločeni z vejicami in vsak znak je v enojnih narekovajih. Vsebina besedila tretjega polja je ločena z dvojnimi narekovaji; znaki niso ločeni z vejicami in vsak znak ni v enojnih narekovajih. Drugi in tretji niz sta dva načina za ustvarjanje niza, pri čemer je tretji način boljši.

arr je konstanten kazalec na prvi element svoje matrike, kar pomeni, da bo arr vedno kazal na lokacijo s celim številom, 3 tudi če je vrednost 3 spremenjena. Velikost matrike, pet elementov, v resnici ne ostane nespremenjena. Vendar pa je mogoče spremeniti vsako vrednost matrike.

str je konstanten kazalec na prvi element svoje matrike, kar pomeni, da bo str vedno kazal na lokacijo z znakom, 'w', tudi če je vrednost 'w' spremenjena. Velikost nizov znakov, pet elementov, v resnici ne ostane nespremenjena. Vendar pa je mogoče spremeniti vsako od vrednosti dobesednega besedila.

stri je konstanten kazalec na prvi element njegove dobesedne besede (matrike), kar pomeni, da bo stri vedno kazal na lokacijo z znakom, w, tudi če je vrednost w spremenjena. Velikost nizovne dobesedne črke (polja), pet elementov, v resnici ne ostane nespremenjena. Vendar je mogoče spremeniti vsako od vrednosti dobesednega besedila.

Kaj je konstanta v matriki ali dobesednem nizu? Naslov pomnilnika prvega elementa matrike ali literala ostane kot vrednost imena (identifikatorja) matrike ali literala in ga ni mogoče spremeniti. No, velikost matrike ali literala v resnici ne ostane nespremenjena. Vsako vrednost v matriki ali literalu je mogoče spremeniti. Naslednja koda prikazuje, kako je bil spremenjen četrti element vsakega polja:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "ženska";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Rezultat je:

9
ženske
ženske

Upoštevajte, da je do elementov definirane literalne strune, tako kot pri tretji definiciji zgoraj, mogoče dostopati z indeksom matrike (podpis). Razlog za drugo vrstico rezultata je naveden spodaj.

Podpis definicije

Upoštevajte, da v zgornjih definicijah za podpis ni celo število. Če programerja ne more zlahka določiti števila elementov, mora izpustiti celo število za indeks. Kakor koli že, celo število ne sme biti manjše od števila elementov v matriki.

Za dobesedno dobesedno črko mora biti celo število vsaj 1 večje od števila znakov v nizu. Razlog za to je, da prevajalec vedno doda ničelni znak (\ 0) na koncu polja, ki je niz, omejen z dvojnimi narekovaji. Ničelni znak ni dodan na koncu drugega zgornjega polja, ker ni uradni niz. Tretji niz je uradni niz. Naslednja koda prikazuje najmanjše vrednosti podpisa.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "ženska";

Da bi druga definicija postala uradni niz, je treba dodati ničelni znak, kot sledi:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "ženska";

Izhod bi moral biti zdaj,

9
ženske
ženske

brez drugih "žensk". Upoštevajte, da je ustrezni podpis za drugo matriko 6 in ne 5, kot je bil.

Stalne dobesedne vrednote

Če želite ustaviti spreminjanje katerega koli znaka v dvojnih narekovajih, dodeljenih identifikatorju, pozneje v programu pred definicijo pridržite besedo const, kot sledi:

const char ident [] = "ljubim te";

Operacije s String Literals

Operacije za enakost

Operatorja enakosti sta == in != . Ko primerjamo spremenljivke (identifikatorje) dveh nizov, se na koncu primerjajo kazalci (naslovi) literalov; to je narobe. Za primerjavo nizov je treba primerjati literale, kot v naslednji kodi:

rezultat bool = "ženska" == "ženska";
cout << result << '\n';

Izhod je 1 za true. Primerjava je narejena po slovarju, vendar so številke najprej v naraščajočem vrstnem redu pred velikimi črkami, ki so pred malimi črkami. Rezultat naslednje kode je 0, za false.

bool rezultat = "ženska" != "ženska";
cout << result << '\n';

Relacijski operaterji z nizovnimi slovnicami

Relacijski operaterji ne delujejo z nizovnimi dobesednimi črkami.

Raw String Literal

Neobdelani dobesedni niz omogoča prikaz niza kot vtipkan, ignoriranje ubežnih zaporedij in spoštovanje novih vrstic. Upoštevajte naslednjo kodo:

char str [] = R "(abc \\ d efg hij
klmn \ n "'opq
prvo) ";
cout << str << '\n';

Rezultat je:

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

V kodi se neobdelana dobesedna dobesedna črka začne z R, čemur sledi »in ( . Konča se z) in “.

Dobesedne vrste glavnega niza C ++

char

Tip char je izvirni tip C ++ in običajno shrani znak v 8 bitov.

char16_t

Ta shrani znak v 16 bitov.

char32_t

Ta shrani znak v 32 bitov.

wchar_t

char16_t in char32_t sta široka znaka. wchar_t je širok znak, ki je lastniški in določen za izvajanje.

Zaključek

Znakovni dobesedni znak je en sam znak v enojnih narekovajih. Ubežno zaporedje je znak, ki je lahko tudi v enojnih narekovajih. Niz nizov je zaporedje znakov v dvojnih narekovajih. Niz literal je niz znakov, ki se konča z \ 0. Operatorji enakosti in relacije delujejo z znakovnimi literali. Operatorji enakosti delujejo z nizovnimi literalami, relacijski operaterji pa ne delujejo z nizovnimi literalami. Pri primerjavah je mogoče uporabiti identifikatorje znakov, v primerjavah pa identifikatorjev nizov. Neobdelani dobesedni niz omogoča prikaz niza kot vtipkan, ignoriranje ubežnih zaporedij in spoštovanje novih vrstic.

Chrys

Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...