C ++

Kaip naudotis C ++ String Literal

Kaip naudotis C ++ String Literal
Kompiuterio klaviatūroje yra atspausdinti simboliai. Paspaudus klavišą, ekrane pamatysite simbolį. Pastaba: tarpas taip pat yra simbolis. String literal yra simbolių seka. Šiame straipsnyje paaiškinta, kaip naudoti C ++ eilutės literalus. Norėdami suprasti šį straipsnį, turėtumėte žinoti apie C ++ masyvus ir rodykles.

Veikėjas pažodinis

Žodžio simbolis yra simbolis vienomis kabutėmis. Taigi,

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

yra visi skirtingi simbolių apibrėžimai. Atminkite, kad skaitmuo atskirose kabutėse yra simbolis, o ne sveikasis skaičius.

Pabėgimo seka, tokia kaip „“ (žr. Toliau) atskirose kabutėse, yra simbolis. Taigi,

char ident1 = "" ";

yra personažas.

Vienas simbolis dvigubose kabutėse nėra simbolis; tai yra vieno simbolio eilutė. Taigi „A“, „c“ arba „2“ nėra simbolis, bet yra po vieną simbolio eilutę.

Simbolio kintamąjį galima vėl priskirti vėliau programoje taip:

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

Norėdami sustabdyti identifikatoriui priskirto simbolio keitimą vėliau programoje, prieš apibrėžimą įrašykite rezervuotą žodį „const“ taip:

const char ident = 'd';

Sakoma, kad kintamasis ident yra tik skaitomas.

Styginis pažodinis

String literal yra simbolių seka dvigubose kabutėse. Taigi,

char ident1 [] = "Aš tave myliu"; char ident2 [] = "Aš nekenčiu 3 iš jūsų"; char ident3 []
= "mes esame pasaulis"; char ident4 [] = "Sveikas pasauli!";

yra visi skirtingi styginių literatų apibrėžimai. Atkreipkite dėmesį į dvigubų kabučių naudojimą. Nėra nieko panašaus į eilinį eilutės kintamąjį. String literal yra simbolių masyvas, kuriame vietoj atribojimo su seka yra atskirta „“. Charatai neatskiriami kableliais. Bet kurį skaičių, didesnį už simbolių skaičių eilutės literate, galima įdėti į laužtinius skliaustus. Tačiau laužtinius skliaustus geriau palikti tuščius.

Vienas simbolis dvigubose kabutėse nėra simbolis; tai yra vieno simbolio eilutė. Taigi „A“, „c“ arba „2“ yra ne simbolis, o kiekvieno po vieną simbolių eilutė.

Styginių kintamasis neleidžia iš naujo priskirti viso literalo, vėliau programos apačioje - žr. Toliau. Tačiau atskirus simbolius galima priskirti iš naujo - žr. Toliau.

Vienkartinė ir dviguba citata simboliu arba pažodžiui

Jei norite turėti vieną simbolio citatą, atlikite kažką panašaus,

char ident = '\' ';

Norėdami turėti dvigubą citatą kaip simbolio eilutės literate, atlikite kažką panašaus,

char ident [] = "ab" cd ";

Nugaros brūkšnys naudojamas pabėgimo seka, kad būtų išvengta konflikto su ribotuvais. Norint turėti dvigubą simbolio citatą, nereikia atgalinio brūkšnio: „” gerai. Norint turėti vieną citatą eilutės literate, atgalinio brūkšnio nereikia: „ab'cd“ yra gerai.

Kadangi atgalinis pasvirasis brūkšnys naudojamas norint išvengti simbolio, jį reikia ištrinti su kitu atgaliniu brūkšniu, kai naudojamas kaip simbolis arba eilutėje.

Pabėgimo seka

Pabėgimo seka yra viena iš šių:

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

Kiekviena pabėgimo seka paprastai įrašoma arba kaip simbolis atskirose kabutėse, arba kaip pabėgimo seka dvigubose kabutėse.

Operacijos su personažais

Sujungimas

Apibrėžtinai du eilutės literalus galima sujungti su tarpu taip:

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

Išvestis yra: abcdef . Šis apibrėžimas gali būti išplėstas daugiau nei dviem pažodžiui. Pastaba: teiginys yra apibrėžimas, o ne tik užduotis. Apibrėžimas gali būti tęsiamas kitoje eilutėje, tarpai atskiriant eilutes taip:

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

Išvestis yra abcdefghi.

Pastaba: simbolių negalima taip susieti, nes pavienės simbolio kabutės negali turėti daugiau nei vieno simbolio.

Lygybės operatoriai

Tie patys simboliai tuo pačiu atveju yra lygūs. Jie nėra lygūs, jei nėra tos pačios bylos. Apsvarstykite,

„Bool“ rezultatas = 'B' == 'B';
cout << result << "\n";

== reiškia lygu, o = reiškia priskirtą, o ne lygų. Išvestis yra 1, jei teisinga. Apsvarstykite,

„Bool“ rezultatas = 'B' == 'b';
cout << result << "\n";

Išvestis yra 0, jei klaidinga. Apsvarstykite,

„Bool“ rezultatas = 'b' == 'c';
cout << result << "\n";

Išvestis yra 0, jei klaidinga. Apsvarstykite,

„Bool“ rezultatas = „B“ != „B“;
cout << result << "\n";

!= reiškia nelygią, o = reiškia priskirtą ir nelygią. Išvestis yra 0, jei klaidinga. Apsvarstykite,

„Bool“ rezultatas = „B“ != „b“;
cout << result << "\n";

Išvestis yra 1, jei teisinga. Apsvarstykite,

„Bool“ rezultatas = 'b' != „c“;
cout << result << "\n";

Išvestis yra 1, jei teisinga.

Taigi, == ir != yra lygybės operatoriai.

Ryšių operatoriai

Paprastiems simboliams C ++ didėjančia tvarka skaičiai eina prieš didžiąsias, o prieš mažąsias.

Taigi < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = yra panašiai paaiškinti.

Styginis literalas kaip objektas

Masyvas yra pastovus rodiklis į tam tikros duomenų tipo sekos pradžią. Panašiai eilutė yra pastovus žymeklis į simbolių sekos pradžią. Palyginkite šiuos apibrėžimus:

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

Pirmasis masyvas yra intų masyvas ir turi penkis elementus. Antroji ir trečioji masyvai yra simbolių masyvai su skirtingais pavadinimais, tačiau vienodu elementų skaičiumi. Antroji ir trečioji masyvai yra vienodi, tačiau pagal jų pavadinimus. Antrojo masyvo teksto turinį riboja petnešos; simboliai atskiriami kableliais, o kiekvienas simbolis yra atskirose kabutėse. Trečiojo masyvo teksto turinį riboja dvigubos kabutės; simboliai nėra atskirti kableliais ir kiekvienas simbolis nėra atskirose kabutėse. Antrasis ir trečiasis masyvas yra du eilutės sudarymo būdai, o trečiasis būdas yra geresnis būdas.

„arr“ yra pastovus rodiklis į pirmąjį jo masyvo elementą, o tai reiškia, kad „arr“ visada nurodys vietą, kurioje yra sveikasis skaičius 3, net jei pakeičiama 3 reikšmė. Masyvo dydis, penki elementai, iš tikrųjų nelieka pastovus. Tačiau kiekvieną iš masyvo reikšmių galima pakeisti.

str yra pastovus rodiklis į pirmąjį masyvo elementą, o tai reiškia, kad str visada nurodys vietą, turinčią simbolį „w“, net jei „w“ reikšmė bus pakeista. Simbolių masyvo dydis, penki elementai, iš tikrųjų nelieka pastovus. Tačiau kiekvieną iš pažodžio reikšmių galima pakeisti.

stri yra pastovus žymeklis į pirmąjį jos pažodinio elemento (masyvo) elementą, o tai reiškia, kad stri visada nurodys vietą, kurioje yra simbolis, net jei w reikšmė bus pakeista. Stygos literalo (masyvo) dydis, penki elementai, iš tikrųjų nelieka pastovus. Tačiau kiekvieną iš pažodžio reikšmių galima pakeisti.

Kas yra pastovus masyvo ar eilutės pažodžiui? Pirmojo masyvo ar pažodinio elemento atminties adresas lieka kaip masyvo ar pažodinio vardo (identifikatoriaus) vertė ir jo negalima pakeisti. Na, masyvo ar pažodžio dydis iš tikrųjų nelieka pastovus. Kiekvieną masyvo ar pažodinio reikšmę galima pakeisti. Šis kodas rodo, kaip buvo pakeistas kiekvienos masyvo ketvirtasis elementas:

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

Rezultatas yra:

9
moterų moterų
moterys

Atkreipkite dėmesį, kad apibrėžto eilutės literalo elementus, kaip ir aukščiau pateiktą trečiąjį apibrėžimą, galima pasiekti naudojant masyvo indeksą (indeksą). Antrosios išvesties eilutės priežastis pateikiama žemiau.

Apibrėžimas

Atminkite, kad aukščiau pateiktose apibrėžtyse nėra indekso sveiko skaičiaus. Kai programuotojas negali lengvai nustatyti elementų skaičiaus, indekso sveikasis skaičius turėtų būti praleistas. Bet kokiu atveju sveikasis skaičius neturėtų būti mažesnis už masyvo elementų skaičių.

String literal sveikasis skaičius turėtų būti bent 1 didesnis nei eilutės simbolių skaičius. Taip yra todėl, kad nulinį simbolį (\ 0) kompiliatorius visada prideda masyvo, kuris yra eilutė, atskirtą dvigubomis kabutėmis, pabaigoje. Nulis simbolis nėra pridėtas antrojo aukščiau esančio masyvo pabaigoje, nes tai nėra oficiali eilutė. Trečiasis masyvas yra oficiali eilutė. Šis kodas rodo minimalias indekso reikšmes.

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

Norint, kad antrasis apibrėžimas taptų oficialia eilute, „null“ simbolis turi būti pridėtas taip:

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

Dabar turėtų būti išvestis,

9
moterys
moterys

be antrosios „moterų“. Atkreipkite dėmesį, kad antrojo masyvo atitinkamas indeksas yra 6, o ne 5, kaip buvo.

Nuolatinės pažodinės vertybės

Norėdami sustabdyti bet kurio simbolio žymėjimą dvigubose kabutėse, priskirtose identifikatoriui, vėliau programoje, prieš apibrėžimą įrašykite rezervuotą žodį „const“ taip:

const char ident [] = "Aš tave myliu";

Operacijos su styginiais literalais

Lygybės operacijos

Lygybės operatoriai yra == ir != . Palyginus dviejų eilučių kintamuosius (identifikatorius), galiausiai lyginami literatų rodikliai (adresai); tai neteisinga. Norėdami palyginti eilutes, reikia palyginti literatus, kaip nurodyta šiame kode:

bool rezultatas = "moteris" == "moteris";
cout << result << '\n';

Išvestis yra 1, jei teisinga. Palyginimas atliekamas pagal žodyną, tačiau skaičiai yra pirmieji didėjimo tvarka, prieš didžiąsias raides, kurie yra prieš mažąsias. Šio kodo išvestis yra 0, jei klaidinga.

„Bool“ rezultatas = „moteris“ != "moteris";
cout << result << '\n';

Ryšių operatoriai su styginių literalais

Reliaciniai operatoriai neveikia su styginių literalais.

Žalios stygos pažodinis

Neapdorotas eilutės literalas leidžia eilutę rodyti kaip spausdintą, nepaisant pabėgimo sekų ir gerbiant naujas eilutes. Apsvarstykite šį kodą:

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

Rezultatas yra:

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

Kode neapdorotas eilutės literalas prasideda raide R, po kurio rašoma „ir“ ( . Tai baigiasi) ir „.

C ++ pagrindiniai styginių literatūros tipai

char

Char tipas yra originalus C ++ tipas ir paprastai jis saugo simbolį 8 bitais.

char16_t

Tai išsaugo simbolį 16 bitų.

char32_t

Tai išsaugo simbolį 32 bitais.

wchar_t

char16_t ir char32_t yra platūs simboliai. „wchar_t“ yra platus simbolis, kuris yra nuosavybės ir apibrėžtas įgyvendinant.

Išvada

Žodžio simbolis yra vienas simbolis vienose kabutėse. Pabėgimo seka yra simbolis, kuris taip pat gali būti atskirose kabutėse. Eilutės eilutė yra simbolių seka dvigubose kabutėse. String literal yra simbolių masyvas, kuris baigiasi \ 0. Lygybės ir santykių operatoriai dirba su simbolių literalais. Lygybės operatoriai dirba su styginių literalais, tačiau reliaciniai operatoriai neveikia su styginių literalais. Simbolių identifikatoriai gali būti naudojami lyginant, tačiau eilutės identifikatoriai neturėtų būti naudojami palyginime. Neapdorotas eilutės literalas leidžia eilutę rodyti spausdintą, nepaisant pabėgimo sekų ir gerbiant naujas eilutes.

Chrys

Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...
5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...
Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...