Kako se koristi C ++ String Literal

How Use C String Literal

Na tipkovnici računala nalaze se ispisani znakovi. Kad pritisnete tipku, vidjet ćete znak na ekranu. Napomena: razmak je također znak. Niz znakova je niz znakova. Ovaj članak objašnjava kako se koriste literalni nizovi C ++. Da biste razumjeli ovaj članak, trebali biste znati o C ++ nizovima i pokazivačima.

Doslovni lik

Doslovni znak je znak u pojedinačnim navodnicima. Tako,



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

sve su različite definicije likova. Imajte na umu da je znamenka u pojedinačnim navodnicima znak, a ne cijeli broj.



Izlazni niz, poput (vidi dolje) u pojedinačnim navodnicima, je znak. Tako,



charident1= '' ';

je lik.

Jedan simbol u dvostrukim navodnicima nije znak; to je niz od jednog znaka. Dakle, A ili c ili 2 nije znak, već je niz od po jednog znaka.

Varijabla char može se ponovno dodijeliti, kasnije u programu, na sljedeći način:



charident= 'x';
ident= 'I';

Da biste spriječili promjenu znaka dodijeljenog identifikatoru, kasnije u programu, prethodite definiciji rezerviranom riječju const, kako slijedi:

konst charident= 'd';

Za varijablu ident se kaže da je samo za čitanje.

String Literal

Niz znakova je niz znakova u dvostrukim navodnicima. Tako,

charident1[] = 'Volim te'; charident2[] = 'Mrzim vas 3'; charident3[]
= 'mi smo svijet'; charident4[] = 'Pozdrav svijete!';

sve su različite definicije nizova. Obratite pozornost na upotrebu dvostrukih navodnika. Ne postoji ništa poput obične varijable za niz. Nizovni niz je niz znakova, gdje je umjesto razgraničenja s {}, niz razgraničen sa. Znakovi se ne odvajaju zarezima. Bilo koji broj veći od broja znakova u doslovnom nizu može se staviti u uglate zagrade. Međutim, bolje je ostaviti uglate zagrade praznima.

Jedan znak u dvostrukim navodnicima nije znak; to je niz od jednog znaka. Dakle, A ili c ili 2 nisu znak, već niz od po jednog znaka.

Nizna varijabla ne dopušta ponovno dodjeljivanje potpune literale, kasnije u programu-vidi dolje. Međutim, pojedinačni znakovi mogu se ponovno dodijeliti-pogledajte dolje.

Jednostruki i dvostruki citat u znaku ili doslovcu

Da biste imali jedan citat kao lik, učinite nešto poput,

charident= ' '';

Da biste imali dvostruki navod kao znak u doslovnom nizu, učinite nešto poput,

charident[] = 'daleko'CD';

Obrnuta kosa crta koristi se u evakuacijskom slijedu, kako bi se izbjegao sukob s graničnicima. Da biste imali dvostruki navodnik kao lik, nema potrebe za obrnutom kosom crtom: '' je u redu. Da biste imali jedan navodnik u doslovnom nizu, nema potrebe za obrnutom kosom crtom: ab’cd je u redu.

Budući da se obrnuta kosa crta koristi za izbjegavanje znaka, mora se izbjeći drugom obrnutom kosom crtom kada se koristi kao znak ili u doslovnom nizu.

Niz bijega

Escape niz je jedan od:

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

Svaki izlaz u nizu obično se upisuje ili kao znak unutar pojedinačnih navodnika ili kao izlaz u nizu unutar dvostrukih navodnika.

  • ’: Koristi se kao jedan navodnik unutar pojedinačnih navodnika.
  • : koristi se kao dvostruki navodnik, unutar doslovca.
  • ? : otkad? je rezervirani znak, treba ga pobjeći u doslovnom znaku.
  • \: obrnutu kosu crtu treba izbjeći kao znak ili u doslovni niz, kako ne bi rezultiralo nekim drugim značenjem.
  • a: jednom se oglašava alarmom, kada se koristi kao znak ili unutar literalnog niza.
  • b: rezultira povratnim prostorom na zaslonu unutar literalnog niza, uklanjajući prethodni znak.
  • f: uzrokuje da se sljedeća stranica unese u pisač kada se koristi kao znak ili unutar doslovca.
  • r: vraća kursor, gdje će se ispisati sljedeći znak, ali unutar trenutnog retka.
  • n: vraća kursor na početak sljedećeg retka ili samo na sljedeći redak, ovisno o operativnom sustavu.
  • t: stvara vodoravnu karticu.
  • v: stvara okomitu karticu.

Operacije s likovima

Povezivanje

Po definiciji, dva literala niza mogu se spojiti s razmakom na sljedeći način:

charident[] = 'abc' 'def';
trošak<<ident<< ' n';

Izlaz je: abcdef. Ova se definicija može proširiti na više od dvije literale. Napomena: izjava je definicija, a ne samo zadatak. Definicija se čak može nastaviti na sljedeći redak s razmakom koji razdvaja retke na sljedeći način:

charident[] = 'abc' 'def'
'uzeti na znanje';
trošak<<ident<< ' n';

Izlaz je, abcdefghi.

Napomena: Znakovi se ne mogu spojiti na ovaj način, jer pojedinačni navodnici za znak ne mogu imati više od jednog simbola.

Operatori jednakosti

Isti likovi u istom slučaju su jednaki. Nisu jednaki ako nisu iz istog slučaja. Smatrati,

bool rezultat= 'B' == 'B';
trošak<<proizlaziti<< ' n';

== znači jednako, dok = znači dodijeljeno i nije jednako. Izlaz je 1 za true. Smatrati,

bool rezultat= 'B' == 'b';
trošak<<proizlaziti<< ' n';

Izlaz je 0 za false. Smatrati,

bool rezultat= 'b' == 'c';
trošak<<proizlaziti<< ' n';

Izlaz je 0 za false. Smatrati,

bool rezultat= 'B' ! = 'B';
trošak<<proizlaziti<< ' n';

! = znači nejednako, dok = znači dodijeljeno i nejednako. Izlaz je 0 za false. Smatrati,

bool rezultat= 'B' ! = 'b';
trošak<<proizlaziti<< ' n';

Izlaz je 1 za true. Smatrati,

bool rezultat= 'b' ! = 'c';
trošak<<proizlaziti<< ' n';

Izlaz je 1 za true.

Dakle, == i! = Su operatori jednakosti.

Relacijski operatori

Za obične znakove u C ++, u rastućem redoslijedu, brojevi dolaze ispred velikih slova, koji dolaze ispred malih slova.

Tako= su slično objašnjeni.

Doslovni niz kao objekt

Niz je konstantan pokazivač na početak određene sekvence podataka. Slično, niz je konstantan pokazivač na početak niza znakova. Usporedite sljedeće definicije:

intdol[] = {3, 4, 5, 6, 7};
charstr[] = {'u', 'ili', 'm', 'do', 'n'};
charstri[] = 'žena';

Prvi niz je niz ints i ima pet elemenata. Drugi i treći niz su nizovi znakova s ​​različitim nazivima, ali istim brojem elemenata. Drugi i treći niz su isti, ali za njihova imena. Tekstualni sadržaj drugog niza razgraničen je zagradama; znakovi su odvojeni zarezima i svaki znak je u pojedinačnim navodnicima. Tekstualni sadržaj trećeg niza razgraničen je dvostrukim navodnicima; znakovi nisu odvojeni zarezima i svaki znak nije u pojedinačnim navodnicima. Drugi i treći niz su dva načina proizvodnje niza, pri čemu je treći način bolji način.

arr je konstantan pokazivač na prvi element svog niza, što znači da će arr uvijek pokazivati ​​na lokaciju koja ima cijeli broj 3, čak i ako se promijeni vrijednost 3. Veličina niza, pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka od vrijednosti niza može se promijeniti.

str je stalni pokazivač na prvi element svog niza, što znači da će str uvijek pokazivati ​​na lokaciju koja ima znak, 'w' čak i ako se promijeni vrijednost 'w'. Veličina polja znakova, pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka se vrijednost doslovca može promijeniti.

stri je konstantan pokazivač na prvi element svog literala (niz), što znači da će stri uvijek pokazati na lokaciju koja ima znak, w čak i ako se promijeni vrijednost w. Veličina literalnog niza (niza), pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka se vrijednost literala može promijeniti.

Što je konstanta u nizu ili nizu? Memorijska adresa prvog elementa niza ili literala ostaje kao vrijednost imena (identifikatora) niza ili literala i ne može se promijeniti. Pa, veličina polja ili literala zapravo ne ostaje konstantna. Svaka vrijednost u nizu ili literalu može se promijeniti. Sljedeći kôd prikazuje kako je promijenjen četvrti element svakog od niza:

intdol[] = {3, 4, 5, 6, 7};
charstr[] = {'u', 'ili', 'm', 'do', 'n'};
charstri[] = 'žena';

dol[3] = 9;
str[3] = 'I';
stri[3] = 'I';

trošak<<dol[3] << ' n';
trošak<<str<< ' n';
trošak<<stri<< ' n';

Izlaz je:

9
žene
žene

Imajte na umu da se elementima definiranog nizala, kao i za gornju treću definiciju, može pristupiti pomoću indeksa niza (indeksa). Razlog za drugi redak izlaza dat je u nastavku.

Definicija Podnapis

Imajte na umu da u gornjim definicijama ne postoji cijeli broj za indeks. Kada se broj elemenata ne može lako odrediti, programer bi trebao izostaviti cijeli broj za indeks. Što god bilo, cijeli broj ne smije biti manji od broja elemenata u nizu.

Za literal niza cijeli broj bi trebao biti barem 1 veći od broja znakova u nizu. To je zato što prevoditelj uvijek dodaje null znak ( 0), na kraju niza koji je niz, omeđen dvostrukim navodnicima. Nulti znak se ne dodaje na kraju drugog niza iznad, jer nije službeni niz. Treći niz je službeni niz. Sljedeći kôd prikazuje minimalne vrijednosti indeksa.

intdol[5] = {3, 4, 5, 6, 7};
charstr[5] = {'u', 'ili', 'm', 'do', 'n'};
charstri[6] = 'žena';

Kako bi druga definicija postala službeni niz, null znak se mora dodati na sljedeći način:

intdol[5] = {3, 4, 5, 6, 7};
charstr[6] = {'u', 'ili', 'm', 'do', 'n', ' 0'};
charstri[6] = 'žena';

Izlaz bi sada trebao biti,

9
žene
žene

bez drugih žena. Imajte na umu da je odgovarajući indeks za drugi niz 6, a ne 5 kao što je bio.

Stalne doslovne vrijednosti

Da biste spriječili izmjenu bilo kojeg znaka u dvostrukim navodnicima dodijeljenim identifikatoru, kasnije u programu, prethodite definiciji rezerviranom riječju const, kako slijedi:

konst charident[] = 'Volim te';

Operacije s nizovima znakova

Operacije jednakosti

Operatori jednakosti su == i! =. Kada se uspoređuju varijable (identifikatori) dva niza, uspoređuju se pokazivači (adrese) literala; to je pogrešno. Za usporedbu nizova, literal se mora usporediti, kao u sljedećem kodu:

bool rezultat= 'žena' == 'žena';
trošak<<proizlaziti<< ' n';

Izlaz je 1 za true. Usporedba se vrši u rječniku, ali s brojevima koji dolaze prvi u rastućem redoslijedu, prije velikih slova, koja dolaze ispred malih slova. Izlaz sljedećeg koda je 0, za false.

bool rezultat= 'žena' ! = 'žena';
trošak<<proizlaziti<< ' n';

Relacijski operatori s nizovima

Relacijski operatori ne rade sa literalima niza.

Neobrađeni doslovni niz

Sirovi literal niza dopušta prikaz niza kao otkucanog, zanemarujući escape nizove i poštujući nove retke. Uzmite u obzir sljedeći kod:

charstr[] =R'(abc\d efg on
klmn n'
'opq
prvo) ';
trošak<< str << '
n';

Izlaz je:

abc \ d efg he
klmn n'' opq
rst

U kodu, neobrađeni literal počinje s R, nakon čega slijede i (. Završava s) i.

C ++ Doslovni tipovi doslovnih nizova

char

Tip char je izvorni C ++ tip i obično bi pohranio znak u 8 bita.

char16_t

Ovo sprema znak u 16 bita.

char32_t

Ovo sprema znak u 32 bita.

wchar_t

char16_t i char32_t široki su znakovi. wchar_t je širokog karaktera koji je vlasnički definiran i definiran implementacijom.

Zaključak

Doslovni znak znaka je jedan znak u pojedinačnim navodnicima. Izlazni niz je znak koji može biti i u pojedinačnim navodnicima. Nizovni niz je niz znakova u dvostrukim navodnicima. Nizovni niz je niz znakova koji završavaju s 0. Operatori jednakosti i relacije rade s literalima znakova. Operatori jednakosti rade s literalima niza, ali operatori relacije ne rade s nizovima. Identifikatori znakova mogu se koristiti u usporedbama, ali identifikatori nizova ne smiju se koristiti u usporedbama. Sirovi literal niza dopušta prikaz niza kao otkucanog, zanemarujući escape sekvence i poštujući nove retke.

Chrys