Karakter szó
A szó szerinti karakter egy idézőjelben szereplő karakter. Így,
char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';a karakterek különböző definíciói. Vegye figyelembe, hogy az egyetlen idézőjelben lévő számjegy karakter, és nem egész szám.
Az olyan menekülési szekvencia, mint a \ ”(lásd alább) egyetlen idézőjelben, egy karakter. Így,
char ident1 = "" ";egy karakter.
A kettős idézőjelben szereplő egyetlen szimbólum nem karakter; egy karakterből álló húr. Tehát az „A”, „c” vagy „2” nem karakter, hanem egy-egy karakterlánc.
A char változója az alábbiak szerint átrendelhető, később a programban:
char ident = 'x';azonosító = 'Y';
Ha le akarja állítani az azonosítóhoz rendelt karakter megváltoztatását, a program későbbi részében előzze meg a definíciót a fenntartott const szóval, az alábbiak szerint:
const char ident = 'd';Az ident változó csak olvasható.
Húr Szó
A karakterlánc egy karaktersorozat kettős idézőjelben. Így,
char ident1 [] = "Szeretlek"; char ident2 [] = "3-at utálok"; char ident3 []= "mi vagyunk a világ"; char ident4 [] = "Helló világ!";
a string literálok különböző definíciói. Vegye figyelembe a dupla idézőjelek használatát. A karakterlánchoz nincs semmi hasonló, mint egy közönséges változó. A karakterlánc karakterek tömbje, ahol a (z) karakterrel való elválasztás helyett a sorozatot "" -nel határolja. A karaktereket nem vessző választja el. Bármely nagyobb szám, mint a karakterlánc karakterláncában, elhelyezhető a szögletes zárójelben. Jobb azonban a szögletes zárójeleket üresen hagyni.
A kettős idézőjelben szereplő egyetlen karakter nem karakter; egy karakterből álló húr. Tehát az „A”, „c” vagy „2” nem karakter, hanem egy-egy karakterből álló karakterlánc.
A string változó nem teszi lehetővé a teljes literál újbóli hozzárendelését, később a programban - lásd alább. Az egyes karakterek azonban újból hozzárendelhetők - lásd alább.
Egyetlen és kettős idézet karakteres vagy szó szerinti
Ha egyetlen idézet van karakterként, tegyen valami hasonlót,
char ident = '\' ';Ha kettős idézetet szeretne kapni karakterként egy karakterláncban, tegyen valami hasonlót,
char ident [] = "ab" cd ";A visszavonást menekülési sorrendben használják, hogy elkerüljék az elválasztókkal való ütközést. Ahhoz, hogy kettős idézet legyen karakterként, nincs szükség a visszavonásra: a '' 'rendben van. Ahhoz, hogy egyetlen idézet szerepeljen a karakterláncban, nincs szükség a visszavonásra: az „ab'cd” rendben van.
Mivel a hátlapot egy karakter elmenekülésére használják, egy másik visszavágóval meg kell kerülnie, ha karakterként vagy karakterláncban használjuk.
Menekülés szekvencia
A menekülési sorrend a következők egyike:
\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ vAz egyes menekülési szekvenciákat általában karakterként írják be egyetlen idézőjelbe, vagy menekülési szekvenciának a kettős idézőjelbe.
- \ ': egyetlen idézőjelként, egyetlen idézőjelben szerepel.
- \ ”: Kettős idézőjelként használatos, a szó szoros értelmében.
- \? : mivel ? fenntartott karakter, szó szerint meg kell kerülni.
- \\: a hátsó perjelet karakterként vagy karakterláncban kell elkerülni, hogy ne legyen más jelentése.
- \ a: egyszer riasztó hangot ad ki, ha karakterként vagy karakterláncban szerepel.
- \ b: visszalépésként jelenik meg a kijelzőn egy sztring literálon belül, levéve az előző karaktert.
- \ f: a következő oldalt betölti a nyomtatóba, ha azt karakterként vagy literálban használják.
- \ r: visszaadja a kurzort, ahol a következő karaktert kell kinyomtatni, de az aktuális soron belül.
- \ n: a kurzort az operációs rendszertől függően a következő sor elejére vagy éppen a következő sorra adja vissza.
- \ t: vízszintes lapot hoz létre.
- \ v: létrehoz egy függőleges fület.
Műveletek karakterekkel
Összefűzés
A definíció szerint két karakterlánc-literál összekapcsolható a szóközzel az alábbiak szerint:
char ident [] = "abc" "def";cout << ident << "\n";
A kimenet: abcdef . Ez a meghatározás kettőnél több literálra is kiterjeszthető. Megjegyzés: az utasítás definíció, nem csak hozzárendelés. A meghatározás folytatható a következő sorig is, a szóközök elválasztásával az alábbiak szerint:
char ident [] = "abc" "def""ghi";
cout << ident << "\n";
A kimenet abcdefghi.
Megjegyzés: A karaktereket nem lehet összefűzni ilyen módon, mivel a karakter egyetlen idézőjelében nem lehet egynél több szimbólum.
Egyenlőség operátorok
Ugyanazon karakterek ugyanabban az esetben egyenlőek. Nem egyenlőek, ha nem ugyanabból az esetből állnak. Fontolgat,
bool eredmény = 'B' == 'B';cout << result << "\n";
== jelentése egyenlő, míg = jelentése hozzárendelt és nem egyenlő. A kimenet true értékre 1. Fontolgat,
bool eredmény = 'B' == 'b';cout << result << "\n";
A kimenet értéke hamis. Fontolgat,
bool eredmény = 'b' == 'c';cout << result << "\n";
A kimenet értéke hamis. Fontolgat,
bool eredmény = 'B' != 'B';cout << result << "\n";
!= = nem egyenlő, míg = jelentése: nem-egyenlő. A kimenet értéke hamis. Fontolgat,
bool eredmény = 'B' != 'b';cout << result << "\n";
A kimenet true értékre 1. Fontolgat,
bool eredmény = 'b' != 'c';cout << result << "\n";
A kimenet true értékre 1.
Tehát, == és != az egyenlőség operátorai.
Relációs operátorok
A C ++ nyelvű, hétköznapi karakterek esetében növekvő sorrendben a számok nagybetűk elé kerülnek, amelyek kisbetűk elé kerülnek.
Így < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = hasonlóan magyarázzák.
A karakterlánc, mint tárgy
A tömb állandó mutató egy adott adattípus szekvencia elejére. Hasonlóképpen, a karakterlánc állandó mutató a karaktersor kezdetére. Hasonlítsa össze a következő definíciókat:
int arr [] = 3, 4, 5, 6, 7;char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "nő";
Az első tömb tömb tömb, és öt elemből áll. A második és a harmadik tömb különféle nevű, de azonos számú elemet tartalmazó karakterek tömbje. A második és a harmadik tömb megegyezik, de a nevük szerint. A második tömb szövegtartalmát zárójelek határolják; a karaktereket vesszők választják el, és mindegyik karakter egyetlen idézőjelben szerepel. A harmadik tömb szövegtartalmát dupla idézőjelek határolják; a karaktereket nem választja el vesszővel, és az egyes karakterek nem állnak egyetlen idézőjelben. A második és a harmadik tömb kétféle módon állíthatja elő a karakterláncot, a harmadik módszer pedig a jobb módszer.
Az arr egy állandó mutató a tömb első elemére, vagyis az arr mindig arra a helyre mutat, ahol az egész értéke 3, még akkor is, ha a 3 értéke megváltozik. A tömb mérete, öt elem, valójában nem marad állandó. A tömb mindegyik értéke azonban megváltoztatható.
Az str egy állandó mutató a tömb első elemére, vagyis az str mindig a „w” karakterű helyre mutat, még akkor is, ha a „w” értéke megváltozik. A karaktertömb mérete, öt elem, valójában nem marad állandó. A literál értéke azonban megváltoztatható.
A strip állandó mutató a literál (tömb) első elemére, vagyis a stri mindig a karakterrel rendelkező helyre mutat, w akkor is, ha a w értéke megváltozik. A karakterlánc (tömb) öt elemének mérete nem igazán marad állandó. A literál értékei azonban módosíthatók.
Mi állandó egy tömbben vagy karakterláncban? A tömb vagy literál első elemének memóriacíme a tömb vagy literál nevének (azonosítójának) értékeként marad, és nem változtatható meg. Nos, a tömb vagy a literál mérete valóban nem marad állandó. A tömbben vagy literálban minden érték megváltoztatható. A következő kód megmutatja, hogyan változott az egyes tömbök negyedik eleme:
int arr [] = 3, 4, 5, 6, 7;char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "nő";
arr [3] = 9;
str [3] = 'e';
csík [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';
A kimenet:
9női nők
nők
Ne feledje, hogy egy meghatározott karakterlánc elemeinek elemei, hasonlóan a fenti harmadik definícióhoz, a tömb indexével (alindexével) érhetők el. A kimenet második sorának okát az alábbiakban adjuk meg.
Definíció Aláírás
Ne feledje, hogy a fenti meghatározásokban nincs egész szám az indexhez. Ha az elemek számát a programozó nem tudja könnyen meghatározni, az al index egész számát el kell hagyni. Bármi legyen is az eset, az egész szám nem lehet kevesebb, mint a tömb elemeinek száma.
A literál karakterlánc esetében az egész számnak legalább 1-gyel nagyobbnak kell lennie, mint a karakterláncok száma. Ez azért van, mert a null karaktert (\ 0) a fordító mindig hozzáadja egy tömb végén, amely egy string, dupla idézőjelekkel elválasztva. A null karaktert a fenti második tömb végén nem adjuk meg, mert ez nem hivatalos karakterlánc. A harmadik tömb hivatalos karakterlánc. A következő kód a minimum index értékeket mutatja.
int arr [5] = 3, 4, 5, 6, 7;char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "nő";
Annak érdekében, hogy a második meghatározás hivatalos karakterlánc legyen, a null karaktert a következőképpen kell hozzáadni:
int arr [5] = 3, 4, 5, 6, 7;char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "nő";
A kimenetnek most kell lennie,
9nők
nők
a második „nők” nélkül. Vegye figyelembe, hogy a második tömb megfelelő indexe 6, és nem 5, mint volt.
Állandó szó szerinti értékek
Ha meg akarja akadályozni az azonosítóhoz rendelt dupla idézőjelek bármely karakterének módosítását, később a programban, előzze meg a definíciót a fenntartott, const szóval az alábbiak szerint:
const char ident [] = "szeretlek";Műveletek vonós literálokkal
Egyenlőségi műveletek
Az egyenlőség operátorai == és != . Két karakterlánc változóinak (azonosítóinak) összehasonlításakor végül a literálok mutatói (címei) kerülnek összehasonlításra; az rossz. A húrok összehasonlításához össze kell hasonlítani a literálokat, a következő kód szerint:
bool eredmény = "nő" == "nő";cout << result << '\n';
A kimenet true értékre 1. Az összehasonlítás szótár módon történik, de növekvő sorrendben először a számok kerülnek a nagybetűk elé, amelyek a kisbetűk elé kerülnek. A következő kód kimenete 0, hamis értékre.
bool eredmény = "nő" != "nő";cout << result << '\n';
Relációs operátorok húrliterekkel
A relációs operátorok nem dolgoznak karakterláncokkal.
Nyers húr literál
Nyers karakterlánc, lehetővé teszi a karakterlánc gépelt megjelenítését, figyelmen kívül hagyva a menekülési szekvenciákat és tiszteletben tartva az új sorokat. Vegye figyelembe a következő kódot:
char str [] = R "(abc \\ d efg hidzsklmn \ n "'opq
első) ";
cout << str << '\n';
A kimenet:
abc \\ d efg hijklmn \ n "'opq
első
A kódban a nyers karakterlánc R betűvel kezdődik, majd a ”és ( . A következővel végződik: és.
C ++ fő karakterlánc-literális típusok
char
A char típus az eredeti C ++ típus, és általában egy karaktert tárol 8 bitben.
char16_t
Ez egy karaktert 16 bitben tárol.
char32_t
Ez 32 karakterben tárol egy karaktert.
wchar_t
A char16_t és a char32_t széles karakterek. A wchar_t egy széles karakter, amely saját és implementáció által definiált.
Következtetés
A karakter szó szerinti egyetlen karakter egyetlen idézőjelben. A menekülési szekvencia olyan karakter, amely egy idézőjelben is szerepelhet. A karakterlánc egy karaktersorozat dupla idézőjelben. A karakterlánc a karakterek tömbje, amelyek végződése \ 0. Az egyenlőség és a relációs operátorok a karakter literálokkal működnek. Az egyenlőség operátorai string literálokkal dolgoznak, de a relációs operátorok nem string karakterekkel. Karakterazonosítók használhatók az összehasonlításokban, de a karakterlánc-azonosítókat nem szabad használni az összehasonlításokban. A nyers karakterlánc lehetővé teszi, hogy a karakterlánc gépeltként jelenjen meg, figyelmen kívül hagyva a menekülési szekvenciákat és tiszteletben tartva az új sorokat.
Chrys