Kako uporabljati C ++ String Literal

How Use C String Literal



Na računalniški tipkovnici so natisnjeni znaki. Ko pritisnete tipko, na zaslonu vidite znak. Opomba: prostor je tudi znak. Dobesedni niz je zaporedje znakov. Ta članek pojasnjuje, kako uporabljati literalne črke C ++. Če želite razumeti ta članek, morate vedeti o matrikah in kazalcih C ++.

Dobesedni znak

Dobesedni znak je znak v enojnih narekovajih. Torej,







charident1= 'TO'; charident2= 'b'; charident3= '4'; charident4= '6';

vse so različne definicije likov. Upoštevajte, da je števka v enojnih narekovajih znak in ne celo število.



Zaporedno zaporedje, kot je (glej spodaj) v enojnih narekovajih, je znak. Torej,



charident1= '' ';

je lik.





En sam simbol v dvojnih narekovajih ni znak; je niz enega znaka. Torej A ali c ali 2 ni znak, ampak je niz po en znak.

Spremenljivko znaka char lahko pozneje v programu prerazporedite na naslednji način:



charident= 'x';
ident= 'IN';

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

const charident= 'd';

Spremenljivka ident naj bi bila samo za branje.

Niz Literal

Dobesedni niz je zaporedje znakov v dvojnih narekovajih. Torej,

charident1[] = 'Ljubim te'; charident2[] = 'Sovražim vas 3'; charident3[]
= 'mi smo svet'; charident4[] = 'Pozdravljen, svet!';

so vse različne definicije literalov nizov. Upoštevajte uporabo dvojnih narekovajev. Za niz ni nič takega kot navadna spremenljivka. Niz nizov je niz znakov, kjer je namesto razmejitve z {} zaporedje razmejeno z. Znaki niso ločeni z vejicami. V oglatih oklepajih je mogoče vstaviti poljubno število, večje od števila znakov v literalu niza. Vendar je bolje, da oglate oklepaje pustite prazne.

En sam znak v dvojnih narekovajih ni znak; je niz enega znaka. Torej A ali c ali 2 ni znak, ampak niz po en znak.

Spremenljivka niza ne dovoljuje ponovne dodelitve celotne črke, pozneje v programu-glej spodaj. Vendar pa je mogoče posamezne znake znova dodeliti-glej spodaj.

Enojna in dvojna navedba v znaku ali dobesedno

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

charident= ' '';

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

charident[] = 'stran'CD';

Povratna poševnica se uporablja v zaporedju za izhod v sili, da bi se izognili konfliktu z ločilniki. Če želite imeti dvojni narekovaj kot znak, poševnica ni potrebna: '' je v redu. Če želite v nizovni črki imeti en sam narekovaj, povratne poševnice ni potrebno: ab’cd je v redu.

Ker se povratna poševnica uporablja za ubežanje znaka, jo je treba uporabiti z drugo poševnico, če se uporablja kot znak ali v literalu niza.

Zaporedje pobega

Zaporedje pobega je eno od naslednjih:

''? \ do b f n r> t v

Vsako zaporedno zaporedje se običajno vnese bodisi kot znak v enojnih narekovajih bodisi kot zaporedje ubežnikov v dvojnih narekovajih.

  • ’: Se uporablja kot enojni narekovaj, znotraj posameznih narekovajev.
  • : se uporablja kot dvojni narekovaj, znotraj literale.
  • ? : od ? je rezerviran znak, zato ga je treba ubežati v dobesedni obliki.
  • \: poševnico je treba ubežati kot znak ali v nizu, da ne bi prišlo do kakšnega drugega pomena.
  • a: enkrat se oglasi alarmni zvonec, če se uporablja kot znak ali v nizu.
  • b: se prikaže kot povratna točka na zaslonu v nizu, pri čemer se odstrani prejšnji znak.
  • f: povzroči, da se naslednja stran vnese v tiskalnik, če se uporablja kot znak ali znotraj črke.
  • r: vrne kazalec, kjer je treba natisniti naslednji znak, vendar znotraj trenutne vrstice.
  • n: vrne kazalec na začetek naslednje vrstice ali samo v naslednjo vrstico, odvisno od operacijskega sistema.
  • t: ustvari vodoravni zavihek.
  • v: ustvari navpični zavihek.

Operacije z liki

Združevanje

Po definiciji se lahko dve nizovni literali združita s presledkom na naslednji način:

charident[] = 'abc' 'def';
stroški<<ident<< ' n';

Izhod je: abcdef. Ta opredelitev se lahko razširi na več kot dve literali. Opomba: stavek je definicija, ne le naloga. Definicija se lahko celo nadaljuje v naslednjo vrstico s presledkom, ki ločuje vrstice na naslednji način:

charident[] = 'abc' 'def'
'upoštevaj';
stroški<<ident<< ' n';

Izhod je, abcdefghi.

Opomba: Znakov na ta način ni mogoče združiti, saj enojni narekovaji za znak ne smejo imeti več kot enega simbola.

Operaterji enakosti

Isti znaki v istem primeru so enaki. Niso enaki, če niso istega primera. Razmislite,

bool rezultat= 'B' == 'B';
stroški<<rezultat<< ' n';

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

bool rezultat= 'B' == 'b';
stroški<<rezultat<< ' n';

Izhod je 0 za false. Razmislite,

bool rezultat= 'b' == 'c';
stroški<<rezultat<< ' n';

Izhod je 0 za false. Razmislite,

bool rezultat= 'B' ! = 'B';
stroški<<rezultat<< ' n';

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

bool rezultat= 'B' ! = 'b';
stroški<<rezultat<< ' n';

Izhod je 1 za true. Razmislite,

bool rezultat= 'b' ! = 'c';
stroški<<rezultat<< ' n';

Izhod je 1 za true.

Torej sta == in! = Operatorja enakosti.

Relacijski operaterji

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

Torej= so podobno razloženi.

Dobesedni niz kot objekt

Niz je stalen kazalec na začetek določenega zaporedja podatkovnega tipa. Podobno je niz stalen kazalec na začetek zaporedja znakov. Primerjajte naslednje definicije:

intpribl[] = {3, 4, 5, 6, 7};
charstr[] = {'in', 'ali', 'm', 'do', 'n'};
charstri[] = 'ženska';

Prvi niz je niz ints in ima pet elementov. Drugi in tretji niz sta nizov znakov z različnimi imeni, vendar z istim številom elementov. Drugi in tretji niz sta enaka, vendar za svoja imena. Besedilna vsebina drugega niza je omejena z oklepaji; znaki so ločeni z vejicami in vsak znak je v enojnih narekovajih. Besedilna vsebina tretje matrike je ločena z dvojnimi narekovaji; znaki niso ločeni z vejicami in vsak znak ni v posameznih narekovajih. Drugi in tretji niz sta dva načina za ustvarjanje niza, pri čemer je tretji način boljši način.

arr je stalen kazalec na prvi element matrike, kar pomeni, da bo arr vedno kazal na lokacijo s celim številom 3, tudi če se vrednost 3 spremeni. Velikost matrike, pet elementov, v resnici ne ostane konstantna. Vendar pa je mogoče spremeniti vsako od vrednosti matrike.

str je stalen kazalec na prvi element matrike, kar pomeni, da bo str vedno kazal na lokacijo z znakom 'w', tudi če se vrednost 'w' spremeni. Velikost niza znakov, pet elementov, v resnici ne ostane konstantna. Vendar pa je mogoče spremeniti vsako vrednost literala.

stri je stalen kazalec na prvi element njegove črke (matriko), kar pomeni, da bo strik vedno kazal na lokacijo z znakom w, tudi če se vrednost w spremeni. Velikost literal niza (matrike), pet elementov, v resnici ne ostane konstantna. Vendar pa je mogoče vsako od vrednosti literala spremeniti.

Kaj je konstanta v matriki ali 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 črke v resnici ne ostane konstantna. Vsako vrednost v matriki ali literalu je mogoče spremeniti. Naslednja koda prikazuje, kako je bil spremenjen četrti element vsakega od nizov:

intpribl[] = {3, 4, 5, 6, 7};
charstr[] = {'in', 'ali', 'm', 'do', 'n'};
charstri[] = 'ženska';

pribl[3] = 9;
str[3] = 'In';
stri[3] = 'In';

stroški<<pribl[3] << ' n';
stroški<<str<< ' n';
stroški<<stri<< ' n';

Izhod je:

9
ženske
ženske

Upoštevajte, da je do elementov opredeljenega niza, kot pri zgornji tretji definiciji, mogoče dostopati z indeksom matrike (podpisom). Razlog za drugo vrstico izpisa je spodaj.

Definicija Podnapis

Upoštevajte, da v zgornjih opredelitvah za podpis ni celo število. Kadar programer ne more zlahka določiti števila elementov, je treba celo število za podnapis izpustiti. Kakorkoli že, celo število ne sme biti manjše od števila elementov v matriki.

Za literal niza mora biti celo število vsaj 1 večje od števila znakov v nizu. To je zato, ker prevajalnik vedno doda ničelni znak ( 0) na koncu niza, ki je niz, ločen z dvojnimi narekovaji. Ničelni znak ni dodan na koncu drugega zgornjega niza, ker ni uradni niz. Tretji niz je uradni niz. Naslednja koda prikazuje minimalne vrednosti podpisa.

intpribl[5] = {3, 4, 5, 6, 7};
charstr[5] = {'in', 'ali', 'm', 'do', 'n'};
charstri[6] = 'ženska';

Da bi druga definicija postala uradni niz, je treba dodati ničelni znak na naslednji način:

intpribl[5] = {3, 4, 5, 6, 7};
charstr[6] = {'in', 'ali', 'm', 'do', 'n', ' 0'};
charstri[6] = 'ženska';

Izhod bi moral biti zdaj,

9
ženske
ženske

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

Stalne dobesedne vrednosti

Če želite ustaviti spreminjanje katerega koli znaka v dvojnih narekovajih, dodeljenih identifikatorju, pozneje v programu, pred definicijo z rezervirano besedo const:

const charident[] = 'Ljubim te';

Operacije z nizom nizov

Operacije enakosti

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

bool rezultat= 'ženska' == 'ženska';
stroški<<rezultat<< ' n';

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

bool rezultat= 'ženska' ! = 'ženska';
stroški<<rezultat<< ' n';

Relacijski operaterji s črkami nizov

Relacijski operaterji ne delujejo z literalnimi nizi.

Literal surovih nizov

Surov literal niza, ki omogoča prikaz niza kot vtipkan, pri čemer se ignorirajo zaporedja izhodov in spoštujejo nove vrstice. Upoštevajte naslednjo kodo:

charstr[] =R'(abc\d efg on
klmn n'
'opq
prvi) ';
stroški<< str << '
n';

Izhod je:

abc \ d efg he
klmn n'' opq
prvič

V kodi se surovi literalni niz začne z R, ki mu sledita in (. Konča se z) in.

Dobesedne vrste nizov C ++

char

Vrsta char je prvotna vrsta C ++ in običajno shrani znak v 8 bitih.

char16_t

Ta shrani znak v 16 bitov.

char32_t

Ta shrani znak v 32 bitih.

wchar_t

char16_t in char32_t sta široka znaka. wchar_t je širok znak, ki je lastniški in izvedbeno opredeljen.

Zaključek

Dobesedni znak je en sam znak v enojnih narekovajih. Pobegni niz je znak, ki je lahko tudi v enojnih narekovajih. Dobesedni niz je zaporedje znakov v dvojnih narekovajih. Niz nizov je niz znakov, ki se konča z 0. Operatorji enakosti in relacije delujejo z literalnimi črkami. Operaterji enakosti delujejo z literalnimi nizi, vendar relacijski operatorji ne delujejo z literalnimi nizovi. Identifikatorji znakov se lahko uporabljajo v primerjavah, vendar identifikatorjev nizov v primerjavah ne bi smeli uporabljati. Surovi literalni niz omogoča prikaz niza kot vtipkanega, pri čemer se ignorirajo zaporedja ubežnikov in spoštujejo nove vrstice.

Chrys