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 \ vIga põgenemisjärjestus kirjutatakse tavaliselt kas üksikute jutumärkide märgina või topelt jutumärkides olevana.
- \ ': kasutatakse ühe jutumärgina üksikute jutumärkide sees.
- \ ”: Kasutatakse kahekordse jutumärgina, sõna otseses mõttes.
- \? : ajast ? on reserveeritud tegelane, tuleks sellest otseses mõttes põgeneda.
- \\: tagasilöögi tuleks tähemärki või stringiliitlisest välja jätta, et see ei tooks mingit muud tähendust.
- \ a: helistab üks kord häirekellana, kui seda kasutatakse tähemärgina või stringi literaalis.
- \ b: tulemused kuvatakse tagasilükkeklahvina stressi literaalis, eemaldades eelmise märgi.
- \ f: põhjustab järgmise lehe printerisse toomise, kui seda kasutatakse tähemärgina või literaali sees.
- tagastab kursori, kuhu järgmine märk tuleb printida, kuid praegusel real.
- \ n: tagastab kursori järgmise rea algusesse või lihtsalt järgmisele reale, olenevalt opsüsteemist.
- \ t: loob horisontaalse vahelehe.
- \ v: loob vertikaalse vahelehe.
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:
9naissoost 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,
9naised
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 hijklmn \ n "'opq
esimene) ";
cout << str << '\n';
Väljund on:
abc \\ d efg hijklmn \ 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