C ++

Kako se koristi C ++ String Literal

Kako se koristi C ++ String Literal
Na tipkovnici računala ispisani su znakovi. Kad pritisnete tipku, na ekranu ćete vidjeti znak. Napomena: razmak je također karakter. Znakovni niz je niz znakova. U ovom se članku objašnjava kako koristiti C ++ string literale. Trebali biste znati o C ++ nizovima i pokazivačima da biste razumjeli ovaj članak.

Karakter doslovno

Karakter znaka je znak u pojedinačnim navodnicima. Tako,

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

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

Slijed za bijeg kao što je \ ”(vidi dolje) u pojedinačnim navodnicima je znak. Tako,

char ident1 = '"';

je lik.

Pojedinačni 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 znaka može se preraspodijeliti, kasnije u programu, kako slijedi:

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

Da biste zaustavili promjenu znaka dodijeljenog identifikatoru, kasnije u programu, ispred definicije stavite rezerviranu riječ const, kako slijedi:

const char ident = 'd';

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

String Literal

Znakovni niz je niz znakova u dvostrukim navodnicima. Tako,

char ident1 [] = "Volim te"; char ident2 [] = "Mrzim 3 od vas"; char ident3 []
= "mi smo svijet"; char ident4 [] = "Pozdrav svijetu!";

su sve različite definicije stringnih literala. Imajte na umu upotrebu dvostrukih navodnika. Ne postoji ništa poput obične varijable za niz. Znakovni niz je niz znakova, gdje je umjesto razgraničenja sa , 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 prazne.

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

Varijabla niza ne dopušta ponovno dodjeljivanje kompletnog doslovnog teksta, kasnije u programu - pogledajte dolje. Međutim, pojedinačni znakovi mogu se dodijeliti ponovno - pogledajte dolje.

Jednostruki i dvostruki navod u znaku ili pismu

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

char ident = '\' ';

Da biste imali dvostruki navodnik kao znak u doslovnom nizu, učinite nešto slično,

char ident [] = "ab" cd ";

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

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

Slijed bijega

Slijed bijega jedan je od:

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

Svaka se redoslijed bijega obično upisuje ili kao znak unutar pojedinačnih navodnika ili kao redoslijed bijega unutar dvostrukih navodnika.

Operacije s likovima

Spajanje

Po definiciji, dva stringova literala mogu se spojiti s razmakom kako slijedi:

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

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

char ident [] = "abc" "def"
"ghi";
cout << 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 su znakovi u istom slučaju jednaki. Nisu jednaki ako nisu iz istog slučaja. Smatrati,

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

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

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

Izlaz je 0 za false. Smatrati,

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

Izlaz je 0 za false. Smatrati,

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

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

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

Izlaz je 1 za true. Smatrati,

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

Izlaz je 1 za true.

Dakle, == i != su operatori jednakosti.

Relacijski operateri

Za obične znakove u C ++, uzlazno, brojevi dolaze ispred velikih slova, a ispred malih slova.

Tako < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = slično su objašnjeni.

Gudački literal kao objekt

Niz je stalni pokazivač na početak određenog niza tipova podataka. Slično tome, niz je stalni pokazivač na početak niza znakova. Usporedite sljedeće definicije:

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

Prvi niz je niz intova i ima pet elemenata. Drugi i treći niz su nizovi znakova s ​​različitim imenima, ali jednakim brojem elemenata. Drugi i treći niz su isti, ali za svoja imena. Tekstualni sadržaj drugog polja ograničen je zagradama; znakovi su odvojeni zarezima i svaki je znak u pojedinačnim navodnicima. Tekstualni sadržaj trećeg polja odvojen je dvostrukim navodnicima; znakovi nisu odvojeni zarezima i svaki znak nije u pojedinačnim navodnicima. Drugi i treći niz dva su načina stvaranja niza, pri čemu je treći način bolji.

arr je stalni pokazivač na prvi element svojeg niza, što znači da će arr uvijek ukazivati ​​na mjesto koje ima cijeli broj, 3 čak i ako se vrijednost 3 promijeni. Veličina niza, pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka od vrijednosti polja može se mijenjati.

str je konstantni pokazivač na prvi element svojeg niza, što znači da će str uvijek pokazivati ​​na mjesto koje ima znak, 'w', čak i ako je vrijednost 'w' promijenjena. Veličina niza znakova, pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka od vrijednosti doslovca može se mijenjati.

stri je stalni pokazivač na prvi element svog doslovca (niza), što znači da će stri uvijek pokazati na mjesto koje ima karakter, w čak i ako je vrijednost w promijenjena. Veličina literalnog niza (polja), pet elemenata, zapravo ne ostaje konstantna. Međutim, svaka od vrijednosti doslovca može se izmijeniti.

Što je konstantno u nizu ili doslovnom nizu? Adresa memorije prvog elementa niza ili literala ostaje kao vrijednost imena (identifikatora) niza ili literala i ne može se mijenjati. Pa, veličina niza ili doslovnih podataka zapravo ne ostaje konstantna. Svaka vrijednost u polju ili literali može se mijenjati. Sljedeći kod pokazuje kako je promijenjen četvrti element svakog od nizova:

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

Izlaz je:

9
žene
žene

Imajte na umu da se elementima definiranog literalnog niza, kao i gornjoj trećoj definiciji, može pristupiti s indeksom niza (indeks). Razlog za drugi redak rezultata naveden je u nastavku.

Definicija Subscript

Imajte na umu da u gornjim definicijama nema cijelog broja za indeks. Kada programer ne može lako odrediti broj elemenata, cijeli broj za indeks treba izostaviti. Bez obzira na slučaj, cijeli broj ne smije biti manji od broja elemenata u polju.

Za doslovni niz, cijeli broj trebao bi biti najmanje 1 veći od broja znakova u nizu. To je zato što prevodilac uvijek dodaje nulu (\ 0) na kraju niza koji je niz, odvojen dvostrukim navodnicima. Null znak se ne dodaje na kraj drugog gornjeg niza, jer nije službeni niz. Treći niz je službeni niz. Sljedeći kod prikazuje minimalne vrijednosti indeksa.

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

Da bi druga definicija postala službenim nizom, null znak mora se dodati kako slijedi:

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

Izlaz bi sada trebao biti,

9
žene
žene

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

Stalne doslovne vrijednosti

Da biste zaustavili izmjenu bilo kojeg znaka u dvostrukim navodnicima dodijeljenim identifikatoru, kasnije u programu, ispred definicije rezervirajte riječ const, kako slijedi:

const char ident [] = "Volim te";

Operacije sa stringovnim literaturama

Operacije ravnopravnosti

Operatori jednakosti su == i != . Kada se uspoređuju varijable (identifikatori) dva niza, uspoređuju se pokazivači (adrese) literala; to je pogrešno. Da bi se usporedili nizovi, literali se moraju usporediti, kao u sljedećem kodu:

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

Izlaz je 1 za true. Usporedba se vrši prema rječniku, ali brojevi dolaze na prvom mjestu u rastućem redoslijedu, ispred velikih slova, koja dolaze ispred malih slova. Izlaz sljedećeg koda je 0, za false.

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

Relacijski operateri sa nizovnim literaturama

Relacijski operatori ne rade s nizovnim literalima.

Sirova žica doslovna

Neobrađeni doslovni niz, omogućuje prikaz niza kao upisan, ignorirajući izlazne sekvence i poštujući nove redove. Razmotrite sljedeći kod:

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

Izlaz je:

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

U kodu, neobrađeni doslovni niz započinje s R, a slijedi ”i ( . Završava s) i “.

C ++ glavne vrste literalnih nizova

ugljen

Tip char izvorni je tip C ++ i obično pohranjuje znak u 8 bitova.

char16_t

Ovo sprema lik u 16 bitova.

char32_t

Ovo sprema lik u 32 bita.

wchar_t

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

Zaključak

Karakter znaka je jedan znak u pojedinačnim navodnicima. Slijed bijega je znak koji također može biti u pojedinačnim navodnicima. Znakovni niz je niz znakova u dvostrukim navodnicima. Niz literala je niz znakova koji završavaju s \ 0. Operatori jednakosti i relacije rade s literalima znakova. Operatori jednakosti rade s nizovnim literalima, ali relacijski operatori ne rade s nizovnim literalima. Identifikatori znakova mogu se koristiti u usporedbama, ali identifikatori niza ne smiju se koristiti u usporedbama. Neobrađeni doslovni niz omogućuje prikaz niza kao upisan, ignorirajući izlazne sekvence i poštujući nove redove.

Chrys

HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...