La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.

Presentazioni simili


Presentazione sul tema: "Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char."— Transcript della presentazione:

1 Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char e le stringhe!!! le funzioni per la manipolazione delle stringhe falliscono se applicate a vettori di char senza il terminatore (accedono oltre la memoria allocata...) una stringa costante viene definita da una sequenza di caratteri tra doppi apici “Questa e’ una stringa costante” nel caso delle stringhe costanti, non è necessario indicare \0 (viene automaticamente assegnato)

2 Stringhe char message[] = “Corso di C++”; equivale a char message[] = {’C’,’o’,’r’,’s’,’o’,’ ’,’d’,’i’,’ ’,’C’,’+’,’+’,’\0’} alternativamente char message[80] = “Corso di C++”;

3 Stringhe La stringa deve essere inizializzata con la massima lunghezza che verrà utilizzata Non si possono fare assegnazioni del tipo message = “Altro Corso”; in quanto message è un lvalue non modificabile coincidente con l’indirizzo base del vettore di char! modificando il vettore bisogna ricordarsi il terminatore

4 Stringhe char message[] = “Corso di C++”; cout << message << “\n”; // stampa “Corso di C++” message[0]=‘C’; message[1]=‘I’; message[2]=‘A’; message[3]=‘O’; cout << message << “\n”; // stampa “CIAO di C++” message[4]=‘\0’; cout << message << “\n”; // stampa “CIAO”

5 Stringhe le funzioni per la manipolazione delle stringhe sono prototipate in char * strcpy(char *string1, const char *string2); copia una stringa (compreso il terminatore) da string 2 a string1, restituendo anche l’indirizzo della stringa di destinazione (string1)

6 Stringhe #include char message[80]; strcpy(message,”Corso di C++”); cout << message << “\n”; strcpy(message,”CIAO”); cout << message << “\n”; strcat(message, “\nFine del messaggio\n”); cout << message;

7 Stringhe Attenzione a come si occupa la memoria!!!!! //forma 1 char *pt; pt = “Corso di C++”; //forma 2 char *pt = “Corso di C++”; //forma 3 char pt[] = “Corso di C++”;

8 Stringhe –Nel primo caso viene prima dichiarato il puntatore e poi allocata memoria per contenere la costante “Corso di C++” e viene indirizzato il puntatore Nel secondo caso viene dichiarato il puntatore e allocata la memoria contemporaneamente –Nel terzo caso, viene inizializzato un vettore di lunghezza sufficiente a contenere la stringa indicata, che poi può essere anche modificata

9 Stringhe Attenzione a char *string1; char *string2; string1 = “Corso di C++”; string2= “C++”; il compilatore potrebbe far puntare string2 ad un indirizzo della memoria puntata da string1

10 Esempi di manipolazione di stringhe: strcpy strcpy(char* s, char* t) { while((*s = *t) != ‘\0’) { s++; t++; }

11 Esempi di manipolazione di stringhe: strcmp strcmp(char s[], char t[]) { int i; i = 0; while(s[i] == t[i]) if(s[i++] == ‘\0’) return 0; return s[i]-t[i]; }

12 Esempi di manipolazione di stringhe: strcmp strcmp(char* s, char* t) { for( ; *s = = *t; s++,t++;) { if(*s = = ‘\0’) { return 0; } return *s - *t; }


Scaricare ppt "Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char."

Presentazioni simili


Annunci Google