strings c with examples
Una mirada intensiva sobre els fonaments de les cadenes en C ++.
En aquesta sèrie C ++, fins ara, hem parlat sobretot de matrius numèrics a C ++. En aquest tutorial, parlarem de la manipulació amb matrius de caràcters que simplement anomenem 'Cordes'.
La matriu de caràcters és principalment una cadena d’estil C que admet C ++. A més de matrius de caràcters a l'estil C, C ++ també admet una classe de cadena 'std :: string'. A més, en aquest tutorial, parlarem tant dels tipus de cadenes com de la diferència entre elles i sobre la programació de cada tipus en C ++.
=> Mireu la llista completa de tutorials C ++ d’aquesta sèrie.
Què aprendreu:
Matrius de caràcters (cadenes d'estil C)
La cadena d'estil c és una matriu de caràcters acabada amb un caràcter nul ' 0'. Per tant, podem definir una matriu de tipus char i les dimensions o mida de les matrius i, després, podem inicialitzar-la a una cadena o matriu de caràcters.
Tingueu en compte que és el compilador el que finalitza una cadena amb un caràcter nul, de manera que si inicialitzem la matriu de caràcters amb una cadena (a la cometa doble ''), hem de deixar espai addicional per al caràcter nul mentre declarem la mida d'una matriu .
Prenem alguns exemples de declaració i inicialització de matrius de caràcters.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Totes les definicions anteriors són definicions de cadena d'estil C vàlides a C ++. Tingueu en compte que podem declarar la mida real o bé podem deixar la mida en blanc perquè el compilador pugui adaptar-la a la mida en funció de la cadena que hàgim inicialitzat.
Prenem un Exemple de matriu de caràcters de lectura i escriptura en C ++
A continuació es mostra un programa senzill que llegeix la cadena amb cin i la proporciona mitjançant cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Sortida 1:
SoftwareTestingHelp.com
heu introduït: SoftwareTestingHelp.com
Sortida 2:
Es tracta d’una cadena a l’estil C.
has introduït: Això
Si comparem els dos resultats, veurem que quan vam introduir la primera cadena 'SoftwareTestingHelp.com', es va imprimir tal qual.
Però a la segona sortida, tot i que vam introduir la cadena com a 'Aquesta és una cadena d'estil C', la sortida només era 'Aquesta'.
La diferència de sortida es deu a que l’operador ‘>>’ de cin que s’utilitza per llegir la cadena es tracta com a funció ‘scanf’ de C, que només es llegeix fins a l’espai trobat. Per tant, ‘cin amb >>’ és adequat per llegir matrius de caràcters sense espai.
preguntes i respostes d’entrevistes java per a tècnics de novetats
Per tant, mentre es trobava el segon espai de sortida, la funció cin el prenia com a final de la cadena i només llegia la primera paraula.
Per llegir tota una línia de caràcters inclosos els espais, C ++ utilitza la funció 'get'.
A continuació es mostra un exemple de programa que utilitza la funció get:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Sortida:
Això és softwareTestinghelp.com
has introduït: Això és softwareTestinghelp.com
Com es mostra a l'exemple , la funció get de cin utilitza dos arguments. El primer argument és la variable de la matriu de caràcters en què s’ha de llegir la cadena, mentre que el segon argument és la mida màxima de la matriu.
Les cadenes d'estil C també admeten nombroses funcions de cadenes que permeten als usuaris manipular les cadenes. Aquestes funcions es defineixen a la capçalera 'cstring'.
A continuació, presentem una taula que enumera diverses funcions de cadena que es poden utilitzar per manipular cadenes d’estil C.
no Funció Arguments Descripció 1 strcpy s1, s2 Copia la cadena s2 a la cadena s1 2 strcat s1, s2 Afegeix o concatena la cadena s2 al final de la cadena s1 3 strlen s1 Retorna la longitud de la cadena s1 4 strcmp s1, s2 Retorna 0: s1 i s2 són iguals
<0:s1 > 0: s1> s2 5 strchr s1, cap Retorna un punter a la primera aparició del caràcter ch a la cadena s1 i la cadena a partir d’aquí 6 strstr s1, s2 Retorna la primera aparició de la cadena s2 a la cadena s1
El programa següent mostra l'ús d'algunes d'aquestes funcions en C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Sortida:
Longitud de firstStr: 31
Cadena resultant (secStr): softwareTesting
Comparant firstStr i secStr: -31
SecStr concatenat: softwareTesting per a vosaltres
La primera aparició d’i a firststr a: s és softwareTestingHelp.com
Classe de cadena en C ++
La cadena en C ++ definida per la classe 'std :: string' és una representació del flux de caràcters en un objecte. En altres paraules, la classe String és una col·lecció d'objectes de cadena. Aquesta classe de cadena forma part de l’espai de noms std i es defineix a la capçalera “string.h”.
Analitzem algunes de les diferències bàsiques entre la classe de cadena i la matriu de caràcters.
- Tot i que les matrius de caràcters que hem comentat anteriorment s’assignen estàticament durant el temps de compilació, les cadenes són objectes i, per tant, es poden assignar dinàmicament.
- Com que les matrius de caràcters tenen una naturalesa estàtica, no es poden reduir ni ampliar un cop definides. Per tant, si tenim una matriu de caràcters de mida 100 i l’he inicialitzat amb la paraula “Hola”, es perd el espai restant.
Char mystr (100) = 'Hola';
Aquí es malbaraten les 95 ubicacions restants.
Contràriament a això, els objectes de cadena tenen una naturalesa dinàmica i ocuparan l'espai exacte del valor.
- Les matrius de caràcters tenen un rendiment més ràpid, mentre que les cadenes són més lentes.
- Les matrius de caràcters tenen poques funcions que les operen, que poden manipular-les. La classe de cadenes té nombroses funcions, incloses les funcions d'iterador.
Aquestes són algunes de les diferències bàsiques entre la matriu de caràcters i la classe d'objectes de cadena.
A continuació, veurem alguns exemples de classe de cadena juntament amb algunes operacions bàsiques que es realitzen en objectes de la classe de cadena.
Un exemple per declarar i inicialitzar la classe de cadena.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<A l'exemple anterior, hem declarat i inicialitzat un objecte de cadena mitjançant la classe 'cadena'. Aquest és un exemple senzill. Ara tinguem un programa per llegir la cadena de l’usuari i demostrar també poques funcions de cadenes, com ara trobar la longitud i comparar dues cadenes.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Sortida:
Introduïu la cadena
SoftwareTestingHelp
La cadena introduïda és: SoftwareTestingHelp
La longitud de la corda és: 19
Dues cordes són iguals
Nou str1: SoftwareTestingHelp.com
longitud nova str: 0
A la il·lustració anterior, hem utilitzat nombroses funcions de cadena per manipular les cadenes. Després de declarar la cadena, utilitzem la funció 'getline' de la classe de cadena per llegir la cadena des de l'entrada estàndard.
Un cop llegim la cadena, en trobem la longitud utilitzant la funció 'longitud'. Si hem de comparar dues cadenes per avaluar si són iguals o no, podem utilitzar la funció 'comparar' de la classe de cadenes. Si la funció retorna 0, les dues cadenes són iguals en cas contrari, la funció retorna un valor diferent de zero.
Una altra funció és afegir una altra cadena al final de la cadena existent. Aquesta és la funció 'afegir'. En aquest exemple, afegim ‘.com’ a la cadena ja existent str1 amb el valor “softwaretesting”.
L'última funció de l'exemple és la funció d'esborrar que s'utilitza per esborrar el contingut de l'objecte de cadena que invoca. En aquest exemple, esborrem el contingut de l'objecte str de manera que la seva longitud sigui 0.
Conclusió
En aquest tutorial, hem tractat la matriu de caràcters que també s'anomena cadenes d'estil C juntament amb els conceptes bàsics de la classe de cadenes. La classe de cadenes inclou més utilitats com la classe d'iterador, ja que és una classe de contenidors.
Veurem més informació sobre la classe de cordes i les seves funcions als nostres propers tutorials STL.
=> Visiteu aquí per veure la sèrie de formació C ++ per a tothom.
Lectura recomanada
- Ordenació de shell en C ++ amb exemples
- Funcions de data i hora a C ++ amb exemples
- Java String amb buffer de cadenes i tutorial de Generador de cadenes
- Selecció Ordena en C ++ amb exemples
- Funcions de cadena de Python
- Tutorial de Python DateTime amb exemples
- Talla l'ordre a Unix amb exemples
- 70+ BEST Tutorials C ++ per aprendre programació C ++ GRATIS