Com s'utilitza la cadena literal de C ++

How Use C String Literal



El teclat de l’ordinador té caràcters impresos. Quan premeu una tecla, veureu el personatge a la pantalla. Nota: l’espai també és un personatge. Una literal de cadena és una seqüència de caràcters. En aquest article s’explica com utilitzar els literals de cadena C ++. Per entendre aquest article, heu de conèixer matrius i indicadors C ++.

Caràcter Literal

Un caràcter literal és un caràcter entre cometes simples. Tan,







charident1= 'A'; charident2= 'B'; charident3= '4'; charident4= '6';

són definicions de caràcters diferents. Tingueu en compte que un dígit entre cometes simples és un caràcter i no un enter.



Una seqüència d'escapament com (vegeu més avall) entre cometes simples és un caràcter. Tan,



charident1= '' ';

és un personatge.





Un símbol únic entre cometes no és un caràcter; és una cadena d'un caràcter. Per tant, A o c o 2 no són un caràcter, sinó una cadena d’un caràcter cadascun.

La variable d'un caràcter es pot reassignar, més endavant al programa, de la següent manera:



charident= 'X';
ident= 'I';

Per evitar que es canviï un caràcter assignat a un identificador, posteriorment al programa, precedeix la definició amb la paraula reservada, const, de la següent manera:

const charident= 'd';

Es diu que la variable, ident només és de lectura.

Literal de corda

Una literal de cadena és una seqüència de caràcters entre cometes dobles. Tan,

charident1[] = 'T'estimo'; charident2[] = 'T'odio a tres'; charident3[]
= 'som el món'; charident4[] = 'Hola món!';

són definicions diferents de literals de cadena. Tingueu en compte l’ús de cometes dobles. No hi ha res com una variable normal per a una cadena. Una literal de cadena és una matriu de caràcters, en lloc de delimitar amb {}, la seqüència es delimita amb. Els caràcters no estan separats per comes. Qualsevol nombre superior al nombre de caràcters de la cadena literal es pot col·locar entre claudàtors. Tot i així, és millor deixar buits els claudàtors.

Un sol caràcter entre cometes no és un caràcter; és una cadena d'un caràcter. Així doncs, A o c o 2 no són un caràcter, sinó una cadena d’un caràcter cadascun.

Una variable de cadena no permet reassignar el literal complet, més endavant al programa; vegeu més avall. Tanmateix, es poden reassignar caràcters individuals (vegeu més avall.

Cita simple i doble en caràcter o literal

Per tenir una única cita com a personatge, fes alguna cosa així,

charident= ' '';

Per tenir una doble cometa com a caràcter en una cadena literal, feu alguna cosa així,

charident[] = 'fora'cd';

La barra invertida s'utilitza en una seqüència d'escapament, per evitar conflictes amb els delimitadors. Per tenir una doble cita com a personatge, no cal la barra invertida: ‘‘ està bé. Per tenir una cita única en una literal de cadena, no cal fer la barra invertida: ab’cd està bé.

Com que la barra invertida s'utilitza per escapar d'un caràcter, s'ha d'escapar amb una altra barra invertida quan s'utilitzi com a caràcter o en un literal de cadena.

Seqüència d’escapament

Una seqüència d'escapament és una de:

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

Normalment, cada seqüència d'escapament s'escriu com a caràcter entre cometes simples o com a seqüència d'escapament entre cometes dobles.

  • ’: S’utilitza com a caràcter de cometes simples, dins de cometes simples.
  • : s'utilitza com a caràcter de cometes dobles, dins d'un literal.
  • ? : des de? és un caràcter reservat, s'ha d'escapar en un literal.
  • \: la barra invertida s'ha d'escapar com a caràcter o en una cadena literal, per no donar lloc a cap altre significat.
  • a: fa sonar una campana d'alarma una vegada, quan s'utilitza com a caràcter o dins d'un literal de cadena.
  • b: resulta com a retrocés a la pantalla dins d'una cadena literal, eliminant el caràcter anterior.
  • f: provoca que la pàgina següent s'introdueixi a la impressora quan s'utilitza com a caràcter o dins d'un literal.
  • r: retorna el cursor, on s'ha d'imprimir el següent caràcter, però dins de la línia actual.
  • n: torna el cursor al començament de la següent línia o simplement a la següent, en funció del sistema operatiu.
  • t: crea una pestanya horitzontal.
  • v: crea una pestanya vertical.

Operacions amb personatges

Concatenació

A la definició, es poden unir dos literals de cadena amb espai de la següent manera:

charident[] = 'Abc' 'def';
cost<<ident<< ' n';

La sortida és: abcdef. Aquesta definició es pot ampliar a més de dos literals. Nota: la declaració és una definició, no només una assignació. La definició pot fins i tot continuar fins a la següent línia amb un espai que separa les línies de la següent manera:

charident[] = 'Abc' 'def'
'prendre nota';
cost<<ident<< ' n';

La sortida és, abcdefghi.

Nota: Els caràcters no es poden concatenar d'aquesta manera, ja que les cometes simples del personatge no poden tenir més d'un símbol.

Operadors d’igualtat

Els mateixos caràcters en el mateix cas són iguals. No són iguals si no són del mateix cas. Penseu en,

resultat bool= 'B' == 'B';
cost<<resultat<< ' n';

== significa igual, mentre que = significa assignat a i no és igual. La sortida és 1 per cert. Penseu en,

resultat bool= 'B' == 'B';
cost<<resultat<< ' n';

La sortida és 0 per a false. Penseu en,

resultat bool= 'B' == 'C';
cost<<resultat<< ' n';

La sortida és 0 per a false. Penseu en,

resultat bool= 'B' ! = 'B';
cost<<resultat<< ' n';

! = significa no-igual, mentre que = significa assignat-a i no-igual. La sortida és 0 per a false. Penseu en,

resultat bool= 'B' ! = 'B';
cost<<resultat<< ' n';

La sortida és 1 per cert. Penseu en,

resultat bool= 'B' ! = 'C';
cost<<resultat<< ' n';

La sortida és 1 per cert.

Per tant, == i! = Són operadors d’igualtat.

Operadors relacionals

Per als caràcters ordinaris en C ++, en ordre ascendent, els números vénen abans que les majúscules, que vénen abans que les minúscules.

Tan= s’expliquen de manera similar.

La cadena literal com a objecte

La matriu és un punter constant al començament d'una seqüència de tipus de dades particular. De la mateixa manera, la cadena és un punter constant al començament d'una seqüència de caràcters. Compareu les definicions següents:

intarr[] = {3, 4, 5, 6, 7};
charpàg[] = {'dins', 'O', 'm', 'A', 'n'};
charstri[] = 'dona';

La primera matriu és una matriu d’ints i té cinc elements. La segona i la tercera matriu són matrius de caràcters amb noms diferents, però el mateix nombre d'elements. La segona i la tercera matriu són les mateixes, però per als seus noms. El contingut del text de la segona matriu està delimitat per claus; els caràcters estan separats per comes i cada caràcter es troba entre cometes simples. El contingut del text de la tercera matriu està delimitat per cometes dobles; els caràcters no estan separats per comes i cada caràcter no es troba entre cometes simples. La segona i la tercera matriu són dues maneres de produir una cadena, essent la tercera la millor manera.

arr és un punter constant al primer element de la seva matriu, és a dir, arr sempre assenyalarà la ubicació que té l'enter, 3 fins i tot si es canvia el valor de 3. La mida de la matriu, cinc elements, no es manté constant. No obstant això, es pot canviar cadascun dels valors de la matriu.

str és un punter constant al primer element de la seva matriu, és a dir, str sempre assenyalarà la ubicació amb el caràcter 'w' fins i tot si es canvia el valor de 'w'. La mida de la matriu de caràcters, cinc elements, no es manté constant. Tot i això, es pot canviar cadascun dels valors del literal.

stri és un punter constant al primer element del seu literal (array), és a dir, stri sempre assenyalarà la ubicació que té el caràcter, w fins i tot si es canvia el valor de w. La mida de la cadena literal (array), cinc elements, no es manté constant. Tot i això, es pot modificar cadascun dels valors del literal.

Què és constant en una matriu o una cadena literal? L'adreça de memòria del primer element de la matriu o literal roman com a valor del nom (identificador) de la matriu o literal i no es pot canviar. Bé, la mida de la matriu o literal no es manté constant. Es pot canviar cada valor de la matriu o literal. El codi següent mostra com s'ha canviat el quart element de cada una de les matrius:

intarr[] = {3, 4, 5, 6, 7};
charpàg[] = {'dins', 'O', 'm', 'A', 'n'};
charstri[] = 'dona';

arr[3] = 9;
pàg[3] = 'I';
stri[3] = 'I';

cost<<arr[3] << ' n';
cost<<pàg<< ' n';
cost<<stri<< ' n';

La sortida és:

9
dones dones
dones

Tingueu en compte que es pot accedir als elements d’una literal de cadena definida, com per a la tercera definició anterior, amb l’índex de matriu (subíndex). A continuació es dóna el motiu de la segona línia de sortida.

Subíndex de definició

Tingueu en compte que a les definicions anteriors no hi ha cap nombre enter per al subíndex. Quan el programador no pot determinar fàcilment el nombre d’elements, s’ha d’ometre l’enter del subíndex. En qualsevol cas, l'enter no ha de ser inferior al nombre d'elements de la matriu.

Per al literal de la cadena, l’enter hauria de ser almenys 1 superior al nombre de caràcters de la cadena. Això es deu al fet que el caràcter nul ( 0) sempre és afegit pel compilador, al final d'una matriu que és una cadena, delimitada per cometes dobles. El caràcter nul no s'afegeix al final de la segona matriu anterior, perquè no és una cadena oficial. La tercera matriu és una cadena oficial. El codi següent mostra els valors mínims del subíndex.

intarr[5] = {3, 4, 5, 6, 7};
charpàg[5] = {'dins', 'O', 'm', 'A', 'n'};
charstri[6] = 'dona';

Per convertir la segona definició en una cadena oficial, cal afegir el caràcter nul de la manera següent:

intarr[5] = {3, 4, 5, 6, 7};
charpàg[6] = {'dins', 'O', 'm', 'A', 'n', ' 0'};
charstri[6] = 'dona';

La sortida ara hauria de ser,

9
dones
dones

sense les segones dones. Tingueu en compte que el subíndex corresponent per a la segona matriu és 6 i no 5 tal com era.

Valors literals constants

Per evitar que es modifiqui qualsevol caràcter de les cometes dobles assignades a un identificador, més endavant al programa, precedeix la definició amb la paraula reservada, const, de la següent manera:

const charident[] = 'T'estimo';

Operacions amb literals de cadena

Operacions d’igualtat

Els operadors d’igualtat són == i! =. Quan es comparen variables (identificadors) de dues cadenes, són els indicadors (adreces) dels literals els que s’acaben comparant; això està malament. Per comparar les cadenes, cal comparar els literals, com en el codi següent:

resultat bool= 'dona' == 'dona';
cost<<resultat<< ' n';

La sortida és 1 per cert. La comparació es fa a la manera del diccionari, però amb els números que van primer per ordre ascendent, abans que les majúscules, que vénen abans que les minúscules. La sortida del codi següent és 0, per a false.

resultat bool= 'dona' ! = 'dona';
cost<<resultat<< ' n';

Operadors relacionals amb literals de cadena

Els operadors relacionals no funcionen amb literals de cadena.

Literal de cadena crua

Un literal de cadena cru, permet que una cadena es mostri com a mecanografiada, ignorant les seqüències d'escapament i respectant les línies noves. Penseu en el codi següent:

charpàg[] =R'(Abc\d efg he
klmn n'
'opq
primer) ';
cost<< str << '
n';

La sortida és:

abc \ d efg he
klmn n'opq
primer

Al codi, la literal de la cadena bruta comença per R, seguida de i (. Acaba amb) i.

C ++ Tipus literals de cadenes principals

char

El tipus char és el tipus C ++ original i normalment emmagatzema un caràcter en 8 bits.

char16_t

Emmagatzema un caràcter en 16 bits.

char32_t

Emmagatzema un personatge en 32 bits.

wchar_t

char16_t i char32_t són caràcters amplis. wchar_t és un caràcter ampli propietari i definit per la implementació.

Conclusió

Un caràcter literal és un sol caràcter entre cometes simples. Una seqüència d'escapament és un personatge que també pot aparèixer entre cometes simples. Una literal de cadena és una seqüència de caràcters entre cometes dobles. Un literal de cadena és un conjunt de caràcters que acaben amb 0. Els operadors relacionals i d’igualtat funcionen amb literals de caràcters. Els operadors d’igualtat funcionen amb literals de cadena, però els operadors relacionals no funcionen amb literals de cadena. Els identificadors de caràcters es poden utilitzar en les comparacions, però els identificadors de cadenes no s’han d’utilitzar en les comparacions. Un literal de cadena en brut permet que una cadena es mostri com s'escriu, ignorant les seqüències d'escapament i respectant les línies noves.

Chrys