Libro 1 – Capitolo 7 – Le stringhe in C++

Introduzione

Le stringhe in informatica sono uno degli argomenti più importanti perché permettono9 di manipolare tante tipologie di informazioni.
Nel linguaggio di programmazione C++ le stringhe sono o sequenze di char (dal linguaggio C) che sono veri e propri array di caratteri, o sono string un nuovo tipo di dati introdotto nel linguaggio C++ che permette una buona semplificazione del lavoro da parte dello sviluppatore, ma ha il difetto di non avre una lunghezza definita a priori e quindi deve essere gestito in modo attento.

Argomenti

Le stringhe in C++ come array di char

Il linguaggio C++ come è noto è un’estensione del linguaggio C e da esso ha ereditato tutte le caratteristiche compreso il tipo di dati char che rappresenta un singolo carattere.
Una stringa in stile “C” è quindi un aggregato di char definito come array o vettore di caratteri (i vettori o array sono definiti nel capitolo successivo qui diamo solo la definizione e le caratteristiche elementari) e pertanto per dichiarare una stringa in formato “C” occorre definire la lunghezza della stringa o assegnare direttamente il valore contenuto nella stringa.
In quest’ultimo caso la stringa assume la lunghezza pari al numero dei caratteri compresi i caratteri non visibili come i caratteri di spaziatura.
Per definire una stringa in C++ possiamo scrivere:
char nome stringa[dimensione];
oppure
char nome stringa[]=”sequenza di caratteri”;
nel pratico
char parola[10]; definisce una stringa di 10 caratteri
e
char frase[]=”Hello World !”;
definisce una stringa di 12 caratteri ivi compresi quindi gli spazi. E’ possibile accedee ad un singolo carattere indicando la posizione del carattere interessato partenzo da un valore zero fino a raggiungere la posizione pari alla lunghezza della stringa diminuita di un’unità.
Ad esempio frase[0]=’H’, frase[1]=’o’, frase[11]=’!’.
E’ importante notare che ogni singolo carattere nelle stringhe tratte in stile 2C” deve essere racchiuso fra singoli “apici” e non virgolette “doppie”.
Un’altra possibile dichiarazione delle stringhe in C è possibile mediante la dichiarazione:
char parola[]={‘c’,’i’,’a’,’o’};
ovvero indicando carattere per carattere la stringa.
Nelle stringhe in formato “C” è importante notare che tali stringhe devono essere terminate, inserendo un carattere speciale detto “terminatore” codice ASCII 0 (‘\0’) per indicare che in fase di lettura o scrittura delle stringhe la stringa è terminata.
Per spiegare bene la questione osserviamo questo frammento semplicissimo di codice C++:

#include <string.h>
#include <iostream>
using namespace std;
int main()
{
	char parola[]="Hello Wordl !\0";
	cout << endl << parola << endl;
	cout << endl << "Lunghezza:"<< strlen(parola) << endl;
	return 0;
}
schema 1

In questo codice ho definito una stringa come array di char e ho inserito anche il terminatore ‘\0’ per terminare la stringa. La stringa avrà una lunghezza complessiva di 13 caratteri in quanto oltre gli spazi fra le parole è presente il carattere di terminazione.
Nell’eseguire il codice C++ ovviamente il terminatore come gli spazi non sono visibili a video ma ci sono.
La domanda è quindi naturale perché devo aggiungere il terminatore ?
La risposta è alquanto immediata, perché quando si creano applicazioni che leggono e scrivono grandi quantità di dati anche in formato stringa e sono terminati questo rappresenta una vantaggio in quanto ogni stringa che è terminata permette al programma di distinguere le stringhe fra loro.
Per fare un esempio immaginiamo di leggere una serie di stringhe contigue “Mario\0” “Rossi\0” in questo caso il programma potrà essere in grado di riconoscere quando la stringa è terminata e passare alla successiva.
Il codice C++ di esempio ti chiarisce meglio la questione. eccolo:

int k=0;
	while (parola[k]!='\0')
	{
		cout << parola[k]<< "\t";
		k++;
	}

Per eseguire il codice sopra riportato basta aggiungere il codice al programma in schema 1.
Il ciclo while produce la stampa carattere per carattere (fra ogni carattere ho inserito una tabulazione) e termina quando il carattere k-mo è il terminatore ‘\0’.

Alcune funzioni sulle stringhe C

Il linguaggio C++ con la libreria string.h ha accesso a tutta una serie di funzioni previste per le stringhe in formato “C”.
La tabella riassuntiva riporta quelle di uso più significativo:


Per continuare a leggere questo articolo devi sottoscrivere un abbonamento
Puoi abbonarti al link al menù principale o cliccando sul link Abbonati Ora!