Kuidas kasutada C ++ String Literalit

How Use C String Literal

Arvuti klaviatuuril on märgid trükitud. Kui vajutate klahvi, näete ekraanil märki. Märkus: tühik on ka märk. String literal on märkide jada. Selles artiklis selgitatakse, kuidas kasutada C ++ stringide literaale. Selle artikli mõistmiseks peaksite teadma C ++ massiive ja näpunäiteid.

Iseloom

Tähemärk literaal on tähemärk üksikmängudes. Niisiis,



süsiident1= 'TO'; süsiident2= 'b'; süsiident3= '4'; süsiident4= '6';

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



Põgenemisjärjestus, näiteks (vt allpool) üksikmängudes, on märk. Niisiis,



süsiident1= '' ';

on tegelane.

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

Sümboli muutuja saab hiljem programmis alla määrata järgmiselt:



süsiident= 'x';
ident= 'JA';

Kui soovite peatada identifikaatorile määratud märgi muutmise, siis hiljem programmis allapoole, enne määratlust reserveeritud sõnaga const, järgmiselt:

const süsiident= 'd';

Muutuja id on väidetavalt kirjutuskaitstud.

String Literal

String literal on kahekordse jutumärgiga tähemärkide jada. Niisiis,

süsiident1[] = 'Ma armastan sind'; süsiident2[] = 'Ma vihkan sind 3'; süsiident3[]
= 'me oleme maailm'; süsiident4[] = 'Tere, Maailm!';

on kõik stringide literaalide erinevad määratlused. Pange tähele topeltjutumärkide kasutamist. Stringi jaoks pole midagi tavalise muutuja sarnast. String -literaal on märkide massiiv, kus {} -ga piiritlemise asemel on jada piiratud. Märke ei eraldata komadega. Nurksulgudesse saab panna suvalise arvu, mis on suurem kui stringide literaalis olev märkide arv. Siiski on parem jätta nurksulud tühjaks.

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

Stringimuutuja ei võimalda täielikku literaali uuesti määrata, hiljem programmis allapoole-vt allpool. Siiski saab üksikuid märke uuesti määrata-vt allpool.

Ühe- ja kahekordsed tsitaadid tegelaskujus või sõnasõnaliselt

Kui soovite tegelasena tsiteerida ühte asja, tehke midagi sellist:

süsiident= ' '';

Kui soovite, et stringi sõnasõnal oleks kahekordne tsitaat, tehke midagi sellist:

süsiident[] = 'eemal'CD';

Kaldkriipsu kasutatakse põgenemisjärjestuses, et vältida konflikte eraldajatega. Kahekordse tsitaadi tegelaskujuna pole tagasilööki vaja: ‘’ on korras. Stringitekstis ühe tsitaadi lisamiseks pole tagasilöögi vajadust: ab’cd on korras.

Kuna kaldkriipsu kasutatakse tähemärgi eest põgenemiseks, tuleb selle tähemärgi või stringi literaali kasutamisel teise kaldkriipsuga tühistada.

Põgenemisjärjestus

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

''? \ -le b f n r> t v

Tavaliselt sisestatakse iga põgenemisjärjestus kas tähemärgina üksikute jutumärkide sees või põgenemisjärjestusena kahekordse jutumärgi sees.

  • ’: Kasutatakse ühe jutumärgina, ühe jutumärgi sees.
  • : kasutatakse kahekordse jutumärgina literaalis.
  • ? : kuna? on reserveeritud tegelane, tuleks sellest sõnasõnaliselt pääseda.
  • \: kaldkriips tuleks tühistada tähemärgina või sõnasõnaliselt, et mitte saada muud tähendust.
  • a: helistab üks kord häirekella, kui seda kasutatakse tähemärgina või stringi literaalis.
  • b: tulemuseks on tagasilükkekraan ekraanil stringi literaalis, eemaldades eelmise märgi.
  • f: põhjustab järgmise lehe sisestamise printerisse, kui seda kasutatakse tähemärgina või literaalis.
  • r: tagastab kursori, kuhu trükitakse järgmine märk, kuid praeguse rea piires.
  • n: viib kursori olenevalt opsüsteemist järgmise rea algusesse või lihtsalt järgmisele reale.
  • t: loob horisontaalse vahelehe.
  • v: loob vertikaalse vahelehe.

Toimingud tegelastega

Ühendamine

Definitsiooni järgi saab kaks string -literaali tühikuga ühendada järgmiselt.

süsiident[] = 'abc' 'def';
maksma<<ident<< ' n';

Väljund on: abcdef. Seda määratlust saab laiendada rohkem kui kahele literaalile. Märkus: avaldus on määratlus, mitte ainult ülesanne. Definitsiooni saab jätkata isegi järgmisele reale, tühikuid eraldades read järgmiselt:

süsiident[] = 'abc' 'def'
'võtta teadmiseks';
maksma<<ident<< ' n';

Väljund on, abcdefghi.

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

Võrdõiguslikkuse operaatorid

Samad tegelased samal juhul on võrdsed. Nad ei ole võrdsed, kui nad pole samast juhtumist. Mõelge,

bool tulemus= 'B' == 'B';
maksma<<tulemus<< ' n';

== tähendab võrdne, samas = tähendab määratud ja mitte võrdne. Väljund on tõene 1. Mõelge,

bool tulemus= 'B' == 'b';
maksma<<tulemus<< ' n';

Väljund on vale väärtuse puhul 0. Mõelge,

bool tulemus= 'b' == 'c';
maksma<<tulemus<< ' n';

Väljund on vale väärtuse puhul 0. Mõelge,

bool tulemus= 'B' ! = 'B';
maksma<<tulemus<< ' n';

! = tähendab mitte-võrdne, samas = tähendab-määratud ja mitte-võrdne. Väljund on vale väärtuse puhul 0. Mõelge,

bool tulemus= 'B' ! = 'b';
maksma<<tulemus<< ' n';

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

bool tulemus= 'b' ! = 'c';
maksma<<tulemus<< ' n';

Väljund on tõene 1.

Niisiis, == ja! = On võrdsusoperaatorid.

Suhteoperaatorid

Tavaliste tähemärkide puhul C ++ - s on kasvavas järjekorras numbrid enne suurtähti, mis enne väiketähti.

Niisiis= on sarnaselt selgitatud.

String Literal kui objekt

Massiiv on pidev osuti konkreetse andmetüübi jada algusesse. Samamoodi on string pidev osuti tähemärkide jada algusesse. Võrrelge järgmisi määratlusi:

intarr[] = {3, 4, 5, 6, 7};
süsilk[] = {'sisse', 'või', 'mina', '', 'n'};
süsistri[] = 'naine';

Esimene massiiv on intside massiiv ja sellel on viis elementi. Teine ja kolmas massiiv on erineva nimega tähemärkide massiivid, kuid sama arv elemente. Teine ja kolmas massiiv on samad, kuid nende nimede järgi. Teise massiivi tekstisisu on piiritletud traksidega; tähemärgid eraldatakse komadega ja iga märk on jutumärkides. Kolmanda massiivi tekstisisu on piiratud jutumärkidega; tähemärke ei eraldata komaga ja iga märki ei esitata ühe jutumärkina. Teine ja kolmas massiiv on kaks võimalust stringi tootmiseks, kusjuures kolmas viis on parem.

arr on pidev osuti oma 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. Massiivi kõiki väärtusi saab aga muuta.

str on pidev osuti oma massiivi esimesele elemendile, mis tähendab, et str osutab alati asukohale, millel on märk „w”, isegi kui „w” väärtust muudetakse. Märgimassiivi suurus, viis elementi, ei jää tegelikult konstantseks. Siiski saab kõiki literaali väärtusi muuta.

stri on pidev kursor selle literaali (massiivi) esimesele elemendile, mis tähendab, et stri osutab alati asukohale, millel on märk w, isegi kui w väärtust muudetakse. String literaali (massiivi) suurus, viis elementi, ei jää tegelikult konstantseks. Siiski saab kõiki literaali väärtusi muuta.

Mis on massiivi või stringi literaalis konstantne? Massiivi või literaali esimese elemendi 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 samaks. Massiivi või literaali iga väärtust saab muuta. Järgmine kood näitab, kuidas iga massiivi neljandat elementi on muudetud:

intarr[] = {3, 4, 5, 6, 7};
süsilk[] = {'sisse', 'või', 'mina', '', 'n'};
süsistri[] = 'naine';

arr[3] = 9;
lk[3] = 'Ja';
stri[3] = 'Ja';

maksma<<arr[3] << ' n';
maksma<<lk<< ' n';
maksma<<stri<< ' n';

Väljund on:

9
naised
naised

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

Definitsiooni alaindeks

Pange tähele, et ülaltoodud definitsioonides pole alamindeksi jaoks täisarvu. Kui elementide arvu ei saa programmeerija kergesti kindlaks määrata, tuleks alaindeksi täisarv välja jätta. Igal juhul ei tohiks täisarv olla väiksem kui massiivi elementide arv.

String literaali puhul peaks täisarv olema vähemalt 1 võrra suurem kui stringi tähemärkide arv. Selle põhjuseks on asjaolu, et nullmärgi ( 0) lisab kompilaator alati massiivi lõppu, mis on string, mis on eraldatud kahekordse jutumärgiga. Nullmärki ei lisata ülaltoodud teise massiivi lõppu, kuna see ei ole ametlik string. Kolmas massiiv on ametlik string. Järgmine kood näitab minimaalseid indeksi väärtusi.

intarr[5] = {3, 4, 5, 6, 7};
süsilk[5] = {'sisse', 'või', 'mina', '', 'n'};
süsistri[6] = 'naine';

Teise määratluse ametlikuks stringiks muutmiseks tuleb nullmärk lisada järgmiselt:

intarr[5] = {3, 4, 5, 6, 7};
süsilk[6] = {'sisse', 'või', 'mina', '', 'n', ' 0'};
süsistri[6] = 'naine';

Väljund peaks nüüd olema,

9
naised
naised

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

Pidevad sõnasõnalised väärtused

Kui soovite peatada identifikaatorile määratud kahekordse jutumärgi mis tahes tähemärgi muutmise, hiljem programmis allapoole, enne määratlust reserveeritud sõnaga const, järgmiselt:

const süsiident[] = 'Ma armastan sind';

Operatsioonid keelte literaalidega

Võrdõiguslikkuse toimingud

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

bool tulemus= 'naine' == 'naine';
maksma<<tulemus<< ' n';

Väljund on tõene 1. Võrdlus toimub sõnaraamatus, kuid numbrid on kasvavas järjekorras, enne suuri tähti ja väiketähti. Järgmise koodi väljund on 0, vale.

bool tulemus= 'naine' ! = 'naine';
maksma<<tulemus<< ' n';

Suhteoperaatorid keelpillidega

Suhteoperaatorid ei tööta stringide literaalidega.

Raw String Literal

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

süsilk[] =R'(abc\d efg ta
klmn n'
'opq
esimene) ';
maksma<< str << '
n';

Väljund on:

abc \ d efg ta
klmn n'' opq
esimene

Koodis algab töötlemata stringi literaal R -ga, millele järgneb ja (. See lõpeb) ja.

C ++ peamised keelte kirjatüübid

süsi

Sümbolitüüp on algne C ++ tüüp ja tavaliselt salvestab see tähemärgi 8 bitti.

char16_t

See salvestab märgi 16 bitti.

char32_t

See salvestab märgi 32 bitti.

wchar_t

char16_t ja char32_t on laiad märgid. wchar_t on laia iseloomuga, mis on omandiõiguse ja rakenduse määratletud.

Järeldus

Tähemärk literaal on üks tähemärk üksikute jutumärkidega. Põgenemisjärjestus on tähemärk, mis võib sisaldada ka jutumärke. String literal on kahekordse jutumärgiga tähemärkide jada. String literal on märkide massiiv, mis lõpeb 0 -ga. Võrdõiguslikkuse ja seoseoperaatorid töötavad tähemärkide literaalidega. Võrdõiguslikkuse operaatorid töötavad string -literaalidega, kuid relatsioonioperaatorid ei tööta string -literaalidega. Märkide identifikaatoreid saab kasutada võrdlustes, kuid stringide identifikaatoreid ei tohiks võrdlustes kasutada. Toores stringi literaal võimaldab stringi kuvada trükitud kujul, ignoreerides põgenemisjärjestusi ja austades uusi ridu.

Chrys