Ako používať reťazec C ++ doslovne

How Use C String Literal



Na klávesnici počítača sú vytlačené znaky. Po stlačení klávesu sa znak zobrazí na obrazovke. Poznámka: priestor je tiež znak. Reťazcový literál je postupnosť znakov. Tento článok vysvetľuje, ako používať reťazcové literály C ++. Tento článok by ste mali vedieť o poliach a ukazovateľoch C ++.

Charakter doslovný

Doslovný znak je znak v jednoduchých úvodzovkách. Takže,







charident1= 'TO'; charident2= 'b'; charident3= '4'; charident4= '6';

sú všetky rôzne definície znakov. Upozorňujeme, že číslica v jednoduchých úvodzovkách je znak a nie celé číslo.



Sekvencia úniku, ako napríklad (pozri nižšie) v jednoduchých úvodzovkách, je znak. Takže,



charident1= '' ';

je postava.





Jediný symbol v úvodzovkách nie je znak; je to reťazec jedného znaku. A alebo c alebo 2 teda nie je znak, ale je reťazcom každého znaku.

Premennú znaku je možné priradiť, neskôr v programe, nasledovne:



charident= 'X';
ident= „A“;

Aby sa zabránilo zmene znaku priradeného k identifikátoru, neskôr v programe, pred definíciu zadajte vyhradené slovo, konšt., Takto:

konšt charident= 'd';

Premenná, ident je údajne len na čítanie.

Reťazec doslovný

Reťazcový literál je postupnosť znakov v dvojitých úvodzovkách. Takže,

charident1[] = 'Ľúbim ťa'; charident2[] = „Nenávidím 3 z vás“; charident3[]
= 'my sme svet'; charident4[] = „Ahoj, svet!“;

sú všetky rôzne definície reťazcových literálov. Všimnite si použitia dvojitých úvodzoviek. Pre reťazec neexistuje nič ako obyčajná premenná. Reťazcový literál je pole znakov, kde namiesto oddeľovania pomocou {} je postupnosť oddelená znakom. Znaky nie sú oddelené čiarkami. Do hranatých zátvoriek je možné vložiť akékoľvek číslo väčšie ako počet znakov v doslovnom reťazci. Je však lepšie nechať hranaté zátvorky prázdne.

Jeden znak v dvojitých úvodzovkách nie je znak; je to reťazec jedného znaku. A alebo c alebo 2 teda nie je znak, ale reťazec každého jedného znaku.

Reťazcová premenná neumožňuje opätovné priradenie úplného literálu neskôr v programe-pozri nižšie. Jednotlivé znaky je však možné znova priradiť-pozri nižšie.

Jednoduché a dvojité citáty v charaktere alebo doslove

Ak chcete mať ako postavu jeden citát, urobte niečo také,

charident= ' '';

Ak chcete ako znak v reťazci doslovne použiť dvojitú úvodzovku, urobte niečo ako,

charident[] = 'preč'CD';

Spätné lomítko sa používa v únikovej sekvencii, aby sa zabránilo konfliktu s oddeľovačmi. Na to, aby ste mali ako postavu dvojitú úvodzovku, nie je potrebné spätné lomítko: „“ je v poriadku. Na to, aby ste mali jeden citát v doslovnom reťazci, nie je potrebné spätné lomítko: ab’cd je v poriadku.

Pretože spätné lomítko sa používa na únik znaku, musí byť pri použití ako znak alebo v reťazcovom literáli nahradené iným spätným lomítkom.

Úniková sekvencia

Úniková sekvencia je jednou z týchto:

''? \ do b f n r> t v

Každá úniková sekvencia je zvyčajne napísaná buď ako znak v jednoduchých úvodzovkách, alebo ako úniková sekvencia v dvojitých úvodzovkách.

  • ‘: Používa sa ako znak jednoduchej úvodzovky v jednoduchých úvodzovkách.
  • : sa používa ako znak dvojitých úvodzoviek, doslova.
  • ? : odkedy? je vyhradený znak, malo by sa mu uniknúť doslova.
  • \: zo spätného lomítka by ste mali uniknúť ako znak alebo ako reťazec, aby z toho nevyplýval iný význam.
  • a: zaznie jedenkrát zvukový signál, keď sa použije ako znak alebo v reťazci.
  • b: výsledky ako backspace na displeji v rámci literálu reťazca, pričom sa odstráni predchádzajúci znak.
  • f: spôsobí, že ďalšia stránka bude podávaná do tlačiarne, ak sa použije ako znak alebo v rámci literálu.
  • r: vráti kurzor, kde sa má vytlačiť nasledujúci znak, ale v aktuálnom riadku.
  • n: vráti kurzor na začiatok nasledujúceho riadku alebo len na nasledujúci riadok, v závislosti od operačného systému.
  • t: vytvorí vodorovnú záložku.
  • v: vytvorí zvislú záložku.

Operácie s postavami

Reťazenie

Podľa definície možno dva reťazcové literály spojiť s medzerou takto:

charident[] = 'abc' 'def';
náklady<<ident<< ' n';

Výstupom je: abcdef. Túto definíciu je možné rozšíriť na viac ako dva literály. Poznámka: vyhlásenie je definícia, nielen zadanie. Definícia môže dokonca pokračovať na nasledujúci riadok s medzerou oddeľujúcou riadky takto:

charident[] = 'abc' 'def'
'zaznamenať si';
náklady<<ident<< ' n';

Výstup je abcdefghi.

Poznámka: Znaky nie je možné takto spájať, pretože jednotlivé úvodzovky pre znak nemôžu mať viac ako jeden symbol.

Operátori rovnosti

Rovnaké znaky v rovnakom prípade sú rovnaké. Nie sú si rovní, ak nie sú z rovnakého prípadu. Zvážte,

bool výsledok= 'B' == 'B';
náklady<<výsledok<< ' n';

== znamená rovná sa, zatiaľ čo = znamená priradená a nie rovná sa. Výstup je 1 pre true. Zvážte,

bool výsledok= 'B' == 'b';
náklady<<výsledok<< ' n';

Výstup je 0 pre false. Zvážte,

bool výsledok= 'b' == 'c';
náklady<<výsledok<< ' n';

Výstup je 0 pre false. Zvážte,

bool výsledok= 'B' ! = 'B';
náklady<<výsledok<< ' n';

! = znamená nerovný, zatiaľ čo = znamená priradený a nerovný. Výstup je 0 pre false. Zvážte,

bool výsledok= 'B' ! = 'b';
náklady<<výsledok<< ' n';

Výstup je 1 pre true. Zvážte,

bool výsledok= 'b' ! = 'c';
náklady<<výsledok<< ' n';

Výstup je 1 pre true.

Takže == a! = Sú operátory rovnosti.

Relační operátori

Pri bežných znakoch v C ++ sú čísla vo vzostupnom poradí pred veľkými písmenami a pred malými písmenami.

Takže= sú vysvetlené podobne.

Reťazec doslovne ako predmet

Pole je konštantným ukazovateľom na začiatok konkrétnej sekvencie dátových typov. Podobne je reťazec konštantným ukazovateľom na začiatok sekvencie znakov. Porovnajte nasledujúce definície:

intarr[] = {3, 4, 5, 6, 7};
charp[] = {'in', 'alebo', 'm', „do“, 'n'};
charstri[] = 'žena';

Prvé pole je pole intov a má päť prvkov. Druhé a tretie pole sú poliami znakov s rôznym názvom, ale rovnakým počtom prvkov. Druhé a tretie pole sú rovnaké, ale pre ich názvy. Textový obsah druhého poľa je oddelený zátvorkami; znaky sú oddelené čiarkami a každá postava je v jednoduchých úvodzovkách. Textový obsah tretieho poľa je oddelený dvojitými úvodzovkami; znaky nie sú oddelené čiarkami a každý znak nie je v jednoduchých úvodzovkách. Druhé a tretie pole sú dva spôsoby výroby reťazca, pričom tretí spôsob je lepším spôsobom.

arr je konštantný ukazovateľ na prvý prvok jeho poľa, čo znamená, že arr bude vždy ukazovať na miesto s celým číslom 3, aj keď sa zmení hodnota 3. Veľkosť poľa, päť prvkov, v skutočnosti nezostáva konštantná. Každú z hodnôt poľa je však možné zmeniť.

str je konštantný ukazovateľ na prvý prvok jeho poľa, čo znamená, že str bude vždy ukazovať na miesto so znakom „w“, aj keď sa zmení hodnota „w“. Veľkosť poľa znakov, päť prvkov, v skutočnosti nezostáva konštantná. Každú z hodnôt literálu je však možné zmeniť.

stri je konštantný ukazovateľ na prvý prvok jeho literálu (pole), čo znamená, že stri bude vždy ukazovať na miesto so znakom, w, aj keď sa zmení hodnota w. Veľkosť reťazca doslovného (pole), päť prvkov, v skutočnosti nezostáva konštantná. Každú z hodnôt literálu je však možné upraviť.

Čo je konštantné v poli alebo reťazci doslovne? Adresa pamäte prvého prvku poľa alebo literálu zostáva ako hodnota názvu (identifikátora) poľa alebo literálu a nemožno ho zmeniť. Veľkosť poľa alebo literálu v skutočnosti nezostáva konštantná. Každú hodnotu v poli alebo literáli je možné zmeniť. Nasledujúci kód ukazuje, ako sa zmenil štvrtý prvok každého z polí:

intarr[] = {3, 4, 5, 6, 7};
charp[] = {'in', 'alebo', 'm', „do“, 'n'};
charstri[] = 'žena';

arr[3] = 9;
p[3] = „A“;
stri[3] = „A“;

náklady<<arr[3] << ' n';
náklady<<p<< ' n';
náklady<<stri<< ' n';

Výstupom je:

9
ženy
ženy

Všimnite si toho, že prvky definovaného reťazcového literálu, ako pre tretiu definíciu vyššie, sú prístupné pomocou indexu poľa (dolného indexu). Dôvod druhého riadku výstupu je uvedený nižšie.

Definičný dolný index

Všimnite si toho, že vo vyššie uvedených definíciách neexistuje celé číslo pre dolný index. Keď programátor nemôže ľahko určiť počet prvkov, celé číslo pre dolný index by malo byť vynechané. Bez ohľadu na to by celé číslo nemalo byť menšie ako počet prvkov v poli.

V prípade reťazcového literálu by celé číslo malo byť aspoň o 1 vyššie ako počet znakov v reťazci. Dôvodom je, že nulový znak ( 0) vždy pridáva kompilátor na konci poľa, ktoré je reťazcom, oddelené úvodzovkami. Nulový znak sa nepridáva na koniec druhého poľa vyššie, pretože nejde o oficiálny reťazec. Tretie pole je oficiálny reťazec. Nasledujúci kód ukazuje minimálne hodnoty dolného indexu.

intarr[5] = {3, 4, 5, 6, 7};
charp[5] = {'in', 'alebo', 'm', „do“, 'n'};
charstri[6] = 'žena';

Aby sa druhá definícia stala oficiálnym reťazcom, nulový znak sa musí pridať nasledovne:

intarr[5] = {3, 4, 5, 6, 7};
charp[6] = {'in', 'alebo', 'm', „do“, 'n', ' 0'};
charstri[6] = 'žena';

Výstup by teraz mal byť,

9
ženy
ženy

bez druhých žien. Všimnite si toho, že zodpovedajúci dolný index pre druhé pole je 6, a nie 5 ako predtým.

Konštantné literálne hodnoty

Aby sa zabránilo modifikácii ľubovoľného znaku v úvodzovkách priradených k identifikátoru, neskôr v programe, pred definíciou zadajte vyhradené slovo, konšt., Takto:

konšt charident[] = 'Ľúbim ťa';

Operácie so sláčikovými literálmi

Operácie rovnosti

Operátory rovnosti sú == a! =. Pri porovnávaní premenných (identifikátorov) dvoch reťazcov sa porovnávajú ukazovatele (adresy) literálov; to je nesprávne. Na porovnanie reťazcov je potrebné porovnať literály, ako v nasledujúcom kóde:

bool výsledok= 'žena' == 'žena';
náklady<<výsledok<< ' n';

Výstup je 1 pre true. Porovnanie sa robí slovníkom, ale čísla sú na prvom mieste vo vzostupnom poradí pred veľkými písmenami a pred malými písmenami. Výstup nasledujúceho kódu je 0, pre hodnotu false.

bool výsledok= 'žena' ! = 'žena';
náklady<<výsledok<< ' n';

Relačné operátory s reťazcovými literálmi

Relačné operátory nepracujú s reťazcovými literálmi.

Doslova surový reťazec

Doslovný reťazec reťazca umožňuje zobraziť reťazec ako zadaný, pričom ignoruje sekvencie úniku a rešpektuje nové riadky. Zvážte nasledujúci kód:

charp[] =R.“(abc\ako on
klmn n'
'opq
prvý) ';
náklady<< str << '
n';

Výstupom je:

abc \ d efg on
klmn '' opq
prvý

V kóde sa literál nespracovaného reťazca začína na R, potom na a (. Končí sa) a.

Literárne typy hlavného reťazca C ++

char

Typ char je pôvodný typ C ++ a zvyčajne by ukladal znak v 8 bitoch.

char16_t

Toto uloží postavu v 16 bitoch.

char32_t

Toto uloží postavu v 32 bitoch.

wchar_t

char16_t a char32_t sú široké znaky. wchar_t je široký charakter, ktorý je patentovaný a definovaný implementáciou.

Záver

Doslovný znak je jeden znak v jednoduchých úvodzovkách. Úniková sekvencia je znak, ktorý môže byť aj v jednoduchých úvodzovkách. Reťazcový literál je postupnosť znakov v dvojitých úvodzovkách. Reťazcový literál je pole znakov, ktoré končia 0. Operátory rovnosti a relacie pracujú s doslovnými znakmi. Operátory rovnosti pracujú so reťazcovými literálmi, ale relačné operátory nepracujú s reťazcovými literálmi. Pri porovnávaní je možné použiť identifikátory znakov, ale pri porovnávaní by sa nemali používať identifikátory reťazcov. Doslovný reťazcový doslovný reťazec umožňuje zobraziť reťazec ako zadaný, pričom ignoruje sekvencie úniku a rešpektuje nové riadky.

Chrys