C ++

Kuinka käyttää C ++ -merkkijonoa

Kuinka käyttää C ++ -merkkijonoa
Tietokoneen näppäimistöön on painettu merkkejä. Kun painat näppäintä, näet merkin näytöllä. Huomaa: välilyönti on myös merkki. Merkkijono literaali on merkkijono. Tässä artikkelissa kerrotaan, kuinka C ++ -merkkijono-literaaleja käytetään. Sinun tulisi tietää C ++ -taulukoista ja osoittimista tämän artikkelin ymmärtämiseksi.

Hahmo Kirjaimellinen

Kirjainmerkki on merkki lainausmerkeissä. Niin,

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

ovat kaikki erilaisia ​​merkkien määritelmiä. Huomaa, että yksittäisissä lainausmerkeissä oleva luku on merkki eikä kokonaisluku.

Pakosarja kuten \ ”(katso alla) yksittäisissä lainausmerkeissä on merkki. Niin,

char ident1 = '"';

on merkki.

Yksittäinen merkki lainausmerkeissä ei ole merkki; se on merkkijono. Joten "A", "c" tai "2" ei ole merkki, vaan merkkijono, jossa on yksi merkki.

Merkin muuttuja voidaan määrittää myöhemmin myöhemmin ohjelmassa seuraavasti:

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

Jos haluat estää tunnisteelle määritetyn merkin muuttamisen myöhemmin ohjelman alareunassa, edeltää määritelmää varatulla sanalla const seuraavasti:

const char ident = 'd';

Muuttujan ident tunnistetaan olevan vain luku -muotoinen.

Jousisoitin

Merkkijonon kirjaimellinen merkkijono on lainausmerkeissä. Niin,

char ident1 [] = "Rakastan sinua"; char ident2 [] = "Vihaan kolmea sinua"; char ident3 []
= "olemme maailma"; char ident4 [] = "Hei maailma!";

ovat kaikki erilaisia ​​merkkijonoliteraaleja. Huomaa kaksoislainausten käyttö. Merkkijonolle ei ole mitään muuta kuin tavallinen muuttuja. Merkkijonolitraali on joukko merkkejä, joissa sekvenssi erotetaan merkillä "" sen sijaan, että se erotetaan : lla. Merkkiä ei eroteta pilkuilla. Mikä tahansa numero, joka on suurempi kuin merkkijonolitraalissa olevien merkkien määrä, voidaan sijoittaa hakasulkeisiin. On kuitenkin parempi jättää hakasulkeet tyhjiksi.

Yksittäinen merkki lainausmerkeissä ei ole merkki; se on merkkijono. Joten "A", "c" tai "2" ei ole merkki, vaan merkkijono, jossa on yksi merkki.

Merkkijonomuuttuja ei salli kokonaisen literaalin uudelleen määrittelemistä myöhemmin ohjelman alareunassa - katso alla. Yksittäisiä merkkejä voidaan kuitenkin määrittää uudelleen - katso alla.

Yksittäinen ja kaksinkertainen lainausmerkki tai kirjaimellinen

Jos sinulla on yksi lainausmerkki, tee jotain,

char ident = '\' ';

Jos haluat kaksinkertaisen lainauksen merkkijonon kirjaimessa, tee jotain,

char ident [] = "ab" cd ";

Takasuuntaista viivaa käytetään pakosarjassa, jotta vältetään ristiriidat erottimien kanssa. Kaksoislainausmerkin saamiseksi ei tarvitse käänteistä viivaa: '' 'on kunnossa. Jos sinulla on yksi lainaus merkkijonolitraalissa, ei tarvitse kääntää vinoviivaa: ”ab'cd” on kunnossa.

Koska taaksepäin viivaa käytetään välttämään merkki, se on vältettävä toisella taaksepäin, kun sitä käytetään merkkinä tai merkkijonon kirjaimessa.

Pakosarja

Pakosarja on yksi seuraavista:

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

Jokainen pakosarja kirjoitetaan normaalisti joko merkkinä yksittäisissä lainausmerkeissä tai pakosarjassa kaksoislainausmerkeissä.

Toiminnot merkkien kanssa

Ketjutus

Määritelmässä kaksi merkkijonolitraalia voidaan yhdistää avaruuteen seuraavasti:

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

Tulos on: abcdef . Tämä määritelmä voidaan laajentaa yli kahteen literaaliin. Huomaa: lause on määritelmä, ei vain tehtävä. Määritelmä voi jopa siirtyä seuraavalle riville välilyönnillä rivien erottamiseksi seuraavasti:

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

Tulos on abcdefghi.

Huomaa: Merkkejä ei voi yhdistää tällä tavalla, koska merkin yksittäisissä lainauksissa ei voi olla useampia kuin yksi symboli.

Tasa-arvooperaattorit

Samat merkit samassa tapauksessa ovat samat. Ne eivät ole tasa-arvoisia, jos he eivät ole samassa tilanteessa. Harkitse,

bool-tulos = 'B' == 'B';
cout << result << "\n";

== tarkoittaa yhtä, kun taas = tarkoittaa osoitettua ja ei yhtä. Tulos on 1 tosi. Harkitse,

bool-tulos = 'B' == 'b';
cout << result << "\n";

Tulos on 0 väärälle arvolle. Harkitse,

Bool-tulos = 'b' == 'c';
cout << result << "\n";

Tulos on 0 väärälle arvolle. Harkitse,

Bool-tulos = 'B' != 'B';
cout << result << "\n";

!= tarkoittaa ei-tasa-arvoa, kun taas = tarkoittaa ei-tasa-arvoa. Tulos on 0 väärälle arvolle. Harkitse,

Bool-tulos = 'B' != 'b';
cout << result << "\n";

Tulos on 1 tosi. Harkitse,

Bool-tulos = 'b' != 'c';
cout << result << "\n";

Tulos on 1 tosi.

Joten, == ja != ovat tasa-arvon toimijoita.

Suhteelliset operaattorit

C ++: n tavallisten merkkien kohdalla numerot tulevat nousevassa järjestyksessä ennen isoja kirjaimia, jotka ovat ennen pieniä kirjaimia.

Niin < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = selitetään samalla tavalla.

Merkkijono kirjaimellinen esineenä

Matriisi on vakioosoitin tietyn tietotyyppisen jakson alkuun. Samoin merkkijono on vakioosoitin merkkijonon alkuun. Vertaa seuraavia määritelmiä:

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

Ensimmäinen taulukko on joukko intoja ja siinä on viisi elementtiä. Toinen ja kolmas taulukko ovat merkkiryhmiä, joilla on eri nimet, mutta sama määrä elementtejä. Toinen ja kolmas taulukko ovat samat, mutta niiden nimet. Toisen taulukon tekstisisältö on rajattu aaltosulkeilla; merkit erotetaan pilkuilla ja kukin merkki on lainausmerkeissä. Kolmannen taulukon tekstisisältö on rajattu lainausmerkeillä; merkkejä ei ole erotettu pilkuilla eikä kukin merkki ole lainausmerkeissä. Toinen ja kolmas taulukko ovat kaksi tapaa tuottaa merkkijono, kolmas tapa on parempi tapa.

arr on vakioosoitin matriisinsa ensimmäiseen elementtiin, mikä tarkoittaa, että arr osoittaa aina sijaintiin, jolla on kokonaisluku 3, vaikka arvon 3 arvoa muutettaisiin. Matriisin koko, viisi elementtiä, ei oikeastaan ​​pysy vakiona. Matriisin kutakin arvoa voidaan kuitenkin muuttaa.

str on vakioosoitin matriisinsa ensimmäiselle elementille, mikä tarkoittaa, että str osoittaa aina sijaintiin, jolla on merkki 'w', vaikka w-arvoa muutettaisiin. Merkkiryhmän koko, viisi elementtiä, ei oikeastaan ​​pysy vakiona. Jokaista literaalin arvoa voidaan kuitenkin muuttaa.

stri on vakioosoitin sen kirjaimen (matriisin) ensimmäiseen elementtiin, mikä tarkoittaa, että stri osoittaa aina sijainnin, jolla on merkki, w vaikka w: n arvoa muutettaisiin. Merkkijonon literaalin (taulukon) koko, viisi elementtiä, ei todellakaan pysy vakiona. Jokaista literaalin arvoa voidaan kuitenkin muuttaa.

Mikä on vakio taulukossa tai merkkijonon kirjaimessa? Taulukon ensimmäisen elementin tai literaalin muistiosoite pysyy taulukon tai literaalin nimen (tunnisteen) arvona, eikä sitä voi muuttaa. Taulukon tai kirjaimen koko ei todellakaan pysy vakiona. Kutakin taulukon arvoa tai literaalia voidaan muuttaa. Seuraava koodi osoittaa, kuinka kunkin taulukon neljäs elementti on muutettu:

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

Tuotos on:

9
naisnaisten
naiset

Huomaa, että määritetyn merkkijonoliteraalin elementteihin, kuten yllä olevaan kolmanteen määritelmään, pääsee taulukkoindeksillä (alaindeksi). Syy tuotoksen toiselle riville on annettu alla.

Määritelmä alaindeksi

Huomaa, että yllä olevissa määritelmissä ei ole alaindeksille kokonaislukua. Kun ohjelmoija ei voi helposti määrittää elementtien lukumäärää, alaindeksin kokonaisluku tulisi jättää pois. Olipa asia sitten mikä tahansa, kokonaisluvun ei tulisi olla pienempi kuin matriisin elementtien lukumäärä.

Merkkijonon kirjaimessa kokonaisluvun tulisi olla vähintään 1 suurempi kuin merkkijonossa olevien merkkien määrä. Tämä johtuu siitä, että kääntäjä lisää aina tyhjän merkin (\ 0) merkkijonon loppuun, joka on erotettu lainausmerkeillä. Nollamerkkiä ei lisätä toisen toisen taulukon loppuun, koska se ei ole virallinen merkkijono. Kolmas taulukko on virallinen merkkijono. Seuraava koodi näyttää alaindeksien vähimmäisarvot.

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

Jotta toisesta määritelmästä tulisi virallinen merkkijono, tyhjä merkki on lisättävä seuraavasti:

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

Tuloksen pitäisi nyt olla,

9
naiset
naiset

ilman toista “naisia”. Huomaa, että toisen taulukon vastaava alaindeksi on 6 eikä 5 kuten se oli.

Jatkuvat kirjaimelliset arvot

Jos haluat lopettaa minkä tahansa tunnisteelle osoitettujen kaksoislainausmerkkien muokkaamisen, myöhemmin ohjelman alareunassa, edeltää määritelmä varatulla sanalla const seuraavasti:

const char ident [] = "Rakastan sinua";

Operaatiot merkkijonoiden kanssa

Tasa-arvooperaatiot

Tasa-arvooperaattorit ovat == ja != . Kun verrataan kahden merkkijonon muuttujia (tunnisteita), verrataan literaalien osoittimia (osoitteita); tuo on väärin. Merkkijonojen vertaamiseksi literaaleja on verrattava seuraavan koodin mukaisesti:

bool-tulos = "nainen" == "nainen";
cout << result << '\n';

Tulos on 1 tosi. Vertailu tehdään sanakirjamuodossa, mutta luvut tulevat ensin nousevassa järjestyksessä ennen isoja kirjaimia, jotka ovat ennen pieniä. Seuraavan koodin lähtö on 0 väärälle arvolle.

bool-tulos = "nainen" != "nainen";
cout << result << '\n';

Suhteelliset operaattorit, joilla on merkkijono-kirjaimia

Relaatio-operaattorit eivät toimi merkkijono-literaalien kanssa.

Raakakielinen kirjaimellinen

Raaka merkkijono literaali, sallii merkkijonon näyttämisen kirjoitettuna, ohittamatta pakosarjoja ja kunnioittaen uusia viivoja. Harkitse seuraavaa koodia:

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

Tuotos on:

abc \\ d efg hij
klmn \ n "'opq
ensimmäinen

Koodissa raaka merkkijono literaali alkaa kirjaimella R, jota seuraa ”ja ( . Se päättyy) ja “.

C ++ päämerkkijonon kirjaintyypit

hiiltyä

Char-tyyppi on alkuperäinen C ++ -tyyppi ja se yleensä tallentaa merkin 8 bittiin.

char16_t

Tämä tallentaa merkin 16 bittiä.

char32_t

Tämä tallentaa merkin 32 bittiä.

wchar_t

char16_t ja char32_t ovat leveitä merkkejä. wchar_t on laaja merkki, joka on oma ja toteutuksen määrittämä.

Johtopäätös

Kirjainmerkki on yksittäinen merkki lainausmerkeissä. Pakosarja on merkki, joka voi olla myös lainausmerkeissä. Merkkijonolitraali on merkkijono kaksoislainausmerkeissä. Merkkijonolitraali on joukko \ 0 päättyviä merkkejä. Tasa-arvo- ja relaatiooperaattorit työskentelevät hahmolitraalien kanssa. Tasa-arvooperaattorit työskentelevät merkkijonolitraalien kanssa, mutta relaatiooperaattorit eivät toimi merkkijono-literaalien kanssa. Merkkitunnuksia voidaan käyttää vertailuissa, mutta merkkijonotunnisteita ei tule käyttää vertailuissa. Raaka merkkijono-literaali sallii merkkijonon näyttämisen kirjoitettuna ohittamatta pakosarjoja ja kunnioittaen uusia viivoja.

Chrys

How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...