C ++

Kuidas kasutada C ++ String Literal

Kuidas kasutada C ++ String Literal
Arvuti klaviatuuril on trükitud tähemärgid. Klahvi vajutades näete ekraanil märki. Märkus: tühik on samuti märk. String literaal on tähemärkide jada. Selles artiklis selgitatakse, kuidas kasutada C ++ stringi literaale. Selle artikli mõistmiseks peaksite teadma C ++ massiive ja näpunäiteid.

Tähemärk

Tähemärkide literaal on üksik jutumärkides olev tegelane. Niisiis,

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

on kõik tähemärkide erinevad määratlused. Pange tähele, et üksik jutumärkides olev number on märk, mitte täisarv.

Põgenemisjärjekord nagu \ ”(vt allpool) üksik jutumärkides on märk. Niisiis,

char ident1 = "" ";

on tegelane.

Üksiktäht jutumärkides ei ole märk; see on ühe märgi string. Nii et “A”, “c” või “2” ei ole tähemärk, vaid see on ühe märgi string.

Südamiku muutuja saab hiljem programmis uuesti määrata järgmiselt:

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

Identifikaatorile määratud märgi muutmise peatamiseks, hilisemas programmis, eelistage määratlus reserveeritud sõnaga const järgmiselt:

const char ident = 'd';

Muutuja ident identiteediks on kirjutuskaitstud.

Keelpilli sõna otseses mõttes

String-literaal on topelt jutumärkides olev märkide jada. Niisiis,

char ident1 [] = "Ma armastan sind"; char ident2 [] = "Ma vihkan teid kolme"; char ident3 []
= "me oleme maailm"; char ident4 [] = "Tere maailm!";

on kõik stringiliteraalide erinevad definitsioonid. Pange tähele topelt jutumärkide kasutamist. Nööri jaoks pole midagi sellist nagu tavaline muutuja. String literaal on tähemärkide massiiv, kus järjestusega eraldamise asemel eraldatakse järjestus tähega "". Märkid pole komadega eraldatud. Nurksulgudesse võib panna suvalise arvu, mis on suurem kui stringide literaali märkide arv. Siiski on parem jätta nurksulgud tühjaks.

Üksik märk jutumärkides ei ole märk; see on ühe märgi string. Nii et “A”, “c” või “2” ei ole tähemärk, vaid ühe tähemärgiga string.

Stringmuutuja ei võimalda kogu literaali, mis on hiljem programmis all, ümber omistada - vt allpool. Üksikuid märke saab siiski uuesti määrata - vt allpool.

Ühe- ja topeltpakkumine tähemärgi või sõnasõnalisena

Kui teil on tegelasena üks tsitaat, tehke midagi sellist,

char ident = '\' ';

Kui teil on stringitähe tegelasena topeltpakkumine, tehke midagi sellist,

char ident [] = "ab" cd ";

Tagasi kaldkriipsu kasutatakse eraldusjärjestuses, et vältida konflikte eraldajatega. Kui teil on märkidena topeltpakkumine, pole tagasilööki vaja: '' 'on korras. Stringi literaalis on üks tsitaat, seljakriipsu pole vaja: "ab'cd" on korras.

Kuna tähemärgist põgenemiseks kasutatakse tagasilööki, tuleb selle märgina või stringi literaalis kasutamisel teise seljakriipsuga põgeneda.

Põgenemisjärjestus

Põgenemisjärjestus on üks järgmistest:

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

Iga põgenemisjärjestus kirjutatakse tavaliselt kas üksikute jutumärkide märgina või topelt jutumärkides olevana.

Tegelased tähemärkidega

Liitmine

Definitsioonis saab kaks stringilitali ühendada ruumiga järgmiselt:

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

Väljund on: abcdef . Seda määratlust saab laiendada rohkem kui kahele literaalile. Märkus: lause on määratlus, mitte ainult ülesanne. Definitsioon võib jätkuda isegi järgmise reaga, kusjuures ruumid eraldavad read järgmiselt:

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

Väljundiks on abcdefghi.

Märkus. Märke ei saa sel viisil liita, kuna märgi üksikpakkumistel ei tohi olla rohkem kui üks sümbol.

Võrdõiguslikkuse operaatorid

Samad tähemärgid samal juhul on võrdsed. Nad ei ole võrdsed, kui nad pole sama juhtumiga. Mõelge,

booli tulemus = 'B' == 'B';
cout << result << "\n";

== tähendab võrdset, samas = = tähendab võrdset ja mitte võrdset. Väljund on 1 tõeseks. Mõelge,

booli tulemus = 'B' == 'b';
cout << result << "\n";

Väljund on 0 vale korral. Mõelge,

booli tulemus = 'b' == 'c';
cout << result << "\n";

Väljund on vale korral 0. Mõelge,

booli tulemus = 'B' != 'B';
cout << result << "\n";

!= tähendab mitte-võrdset, samas kui = tähendab mitte-võrdset ja mitte-võrdset. Väljund on 0 vale korral. Mõelge,

booli tulemus = 'B' != 'b';
cout << result << "\n";

Väljund on 1 tõeseks. Mõelge,

booli tulemus = 'b' != 'c';
cout << result << "\n";

Väljund on 1 tõeseks.

Niisiis, == ja != on võrdõiguslikkuse operaatorid.

Suheteoperaatorid

Tavaliste tähtede puhul C ++, kasvavas järjekorras, tulevad numbrid enne suurtähti, mis enne väiketähti.

Niisiis < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = on sarnaselt seletatud.

String Literal kui objekt

Massiiv on konstantne osuti konkreetse andmetüübi järjestuse algusele. Samamoodi on string konstantne osutaja tähemärkide jada algusele. Võrrelge järgmisi mõisteid:

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

Esimene massiiv on masside massiiv ja sellel on viis elementi. Teine ja kolmas massiiv on tähemassid, millel on erinevad nimed, kuid sama arv elemente. Teine ja kolmas massiiv on samad, kuid nende nimed. Teise massiivi tekstisisaldus on piiritletud sulgudega; tähemärgid on eraldatud komadega ja iga märk on ühes jutumärgis. Kolmanda massiivi tekstisisaldus on piiritletud topelt jutumärkidega; märke ei eraldata komadega ja iga tähemärk pole ühes jutumärgis. Teine ja kolmas massiiv on kaks viisi stringi tootmiseks, kolmas viis on parem viis.

arr on pidev osuti massiivi esimesele elemendile, mis tähendab, et arr osutab alati asukohale, millel on täisarv 3, isegi kui väärtust 3 muudetakse. Massiivi suurus, viis elementi, ei jää tegelikult konstantseks. Kuid massiivi kõiki väärtusi saab muuta.

str on massiivi esimese elemendi pidev osuti, mis tähendab, et str osutab alati asukohale, millel on märk w, isegi kui w väärtust muudetakse. Märgimassiivi, viie elemendi suurus ei jää tegelikult konstantseks. Kõiki literaali väärtusi saab siiski muuta.

stri on selle litali (massiivi) esimese elemendi konstantne osuti, mis tähendab, et stri osutab alati märgiga asukohale w, isegi kui w väärtust muudetakse. Stringi literaali (massiivi) suurus, viis elementi, ei jää tegelikult konstantseks. Kõiki literaali väärtusi saab siiski muuta.

Mis on massiivi või stringiliitses konstantne? Massiivi esimese elemendi või literaali mäluaadress jääb massiivi või literaali nime (identifikaatori) väärtuseks ja seda ei saa muuta. Massiivi või literaali suurus ei jää tegelikult konstantseks. Iga massiivi või literaali väärtust saab muuta. Järgmine kood näitab, kuidas iga massiivi neljandat elementi on muudetud:

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

Väljund on:

9
naissoost naised
naised

Pange tähele, et määratletud stringi literaali elementidele, nagu ülaltoodud kolmanda definitsiooni puhul, pääseb juurde massiivi indeksiga (alaindeks). Väljundi teise rea põhjus on toodud allpool.

Definitsiooni alaindeks

Pange tähele, et ülaltoodud definitsioonides pole alaindeksi täisarvu. Kui elementide arvu ei saa programmeerija poolt hõlpsasti kindlaks teha, tuleks alaindeksi täisarv jätta. Igal juhul ei tohiks täisarv olla väiksem kui massiivi elementide arv.

Stringi literaali puhul peaks täisarv olema vähemalt 1 suurem kui stringis olevate märkide arv. Seda seetõttu, et nullmärk (\ 0) lisatakse kompilaatori poolt alati massiivi lõpus, mis on string, piiritletud topelt jutumärkidega. Nullmärki ülaltoodud teise massiivi lõppu ei lisata, kuna see pole ametlik string. Kolmas massiiv on ametlik string. Järgmine kood näitab minimaalseid alaindeksiväärtusi.

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

Teisest määratlusest ametliku stringi tegemiseks tuleb lisada nullmärk järgmiselt:

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

Nüüd peaks väljund olema,

9
naised
naised

ilma teise naiseta. Pange tähele, et teise massiivi vastav alaindeks on 6, mitte 5 nagu see oli.

Pidevad sõnasõnalised väärtused

Identifikaatorile määratud topelt jutumärkides oleva tähemärgi muutmise peatamiseks, hilisemas programmis, eelistage määratlus reserveeritud sõnaga const järgmiselt:

const char ident [] = "Ma armastan sind";

Operatsioonid keelpilliliitritega

Võrdõiguslikkuse operatsioonid

Võrdõiguslikkuse operaatorid on == ja != . Kui võrrelda kahe stringi muutujaid (identifikaatoreid), siis lõpuks võrreldakse literaalide näpunäiteid (aadresse); see on vale. Stringide võrdlemiseks tuleb võrrelda literaale, nagu järgmises koodis:

bool tulemus = "naine" == "naine";
cout << result << '\n';

Väljund on 1 tõeseks. Võrdlus toimub sõnastikus, kuid numbrid tulevad kasvavas järjekorras enne suuri tähti, mis tulevad enne väiketähti. Järgmise koodi väljund on 0 vale jaoks.

bool tulemus = "naine" != "naine";
cout << result << '\n';

Stringliitritega suhtlusoperaatorid

Relatsioonoperaatorid ei tööta stringi literaalidega.

Toores keelpilli sõna otseses mõttes

Toores stringi literaal, võimaldab stringi kuvada trükituna, eirates põgenemisjärjestusi ja austades uusi ridu. Mõelge järgmisele koodile:

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

Väljund on:

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

Koodis algab toores stringi literaal tähega R, millele järgneb ”ja ( . See lõpeb tähtedega) ja.

C ++ peamised stringide sõnasõnalised tüübid

char

Char-tüüp on algne C ++ -tüüp ja tavaliselt salvestatakse märk 8-bitisena.

char16_t

See salvestab tähemärgi 16 bitti.

char32_t

See salvestab märgi 32 bitti.

wchar_t

char16_t ja char32_t on laiad tähemärgid. wchar_t on lai tähemärk, mis on varaline ja rakenduse määratletud.

Järeldus

Tähemärgi literaal on üksik märk jutumärkides. Põgenemisjärjestus on tähemärk, mis võib olla ka jutumärkides. String literaal on topelt jutumärkides olev märkide jada. String-literaal on tähemärkide massiiv, mis lõpeb \ 0-ga. Võrdõiguslikkuse ja suhteoperaatorid töötavad tähemärki literaalidega. Võrdõiguslikkuse operaatorid töötavad stringi literaalidega, kuid relatsioonioperaatorid stringi literaalidega. Märgitunnuseid saab kasutada võrdlustes, kuid stringide identifikaatoreid ei tohiks võrdlustes kasutada. Toores stringi literaal võimaldab stringi kuvada trükituna, eirates põgenemisjärjestusi ja austades uusi ridu.

Chrys

Kuidas FPS-i suurendada Linuxis?
FPS tähistab Kaadrit sekundis. FPS-i ülesanne on mõõta kaadrisagedust video taasesitamisel või mängude esitamisel. Lihtsamalt öeldes nimetatakse iga s...
Parimad Oculus App Lab mängud
Kui olete Oculuse peakomplekti omanik, peate olema teadlik külglaadimisest. Kõrvalaadimine on protsess, millega installitakse peakomplekti mitte-poesi...
10 parimat mängu, mida Ubuntu kaudu mängida
Windowsi platvorm on olnud üks mängude domineerivaid platvorme, kuna tohutu protsent mänge areneb täna Windowsi loomupäraseks toetamiseks. Kas keegi s...