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 \ vJokainen pakosarja kirjoitetaan normaalisti joko merkkinä yksittäisissä lainausmerkeissä tai pakosarjassa kaksoislainausmerkeissä.
- \ ': käytetään yksittäisenä lainausmerkkinä yksittäisten lainausmerkkien sisällä.
- \ ”: Käytetään kaksoislainausmerkkinä kirjaimessa.
- \? : siitä asti kun ? on varattu merkki, se tulisi välttää kirjaimellisesti.
- \\: taaksepäin viiva tulisi välttää merkkinä tai merkkijonon kirjaimessa, jotta siitä ei tule muuta merkitystä.
- \ a: kuulostaa hälytyskellon kerran, kun sitä käytetään merkkinä tai merkkijonon kirjaimessa.
- \ b: Tulostaa askelpalautettuna merkkijonolitraisessa näytössä poistamalla edellisen merkin.
- \ f: aiheuttaa seuraavan sivun syöttämisen tulostimeen, kun sitä käytetään merkkinä tai literaalissa.
- palauttaa kohdistimen, johon seuraava merkki tulostetaan, mutta nykyisen rivin sisällä.
- \ n: palauttaa kohdistimen seuraavan rivin alkuun tai vain seuraavalle riville käyttöjärjestelmästä riippuen.
- \ t: luo vaakasuoran välilehden.
- \ v: luo pystysuoran välilehden.
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:
9naisnaisten
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,
9naiset
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 hijklmn \ n "'opq
ensimmäinen) ";
cout << str << '\n';
Tuotos on:
abc \\ d efg hijklmn \ 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