La classe string. Tale classe evita agli utilizzatori tutte le problematiche di allocazione e de-allocazione dei buffer di caratteri

Documenti analoghi
1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Gestione di files Motivazioni

4 GLI ARRAY E LE STRINGHE

Allocazione Dinamica della Memoria

Stringhe di caratteri

obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati

Uno stream rappresenta un flusso di dati da cui e' possibile

Caratteri e stringhe. Funzioni di libreria

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Strutture Dinamiche. Fondamenti di Informatica

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

strutturare dati e codice

Informatica 3. Informatica 3. LEZIONE 12: Liste. Lezione 12 - Modulo 1. Posizione corrente. Introduzione

Operazioni elementari sulle stringhe

Esercizi per la prova in itinere (con soluzioni)

Le stringhe. Le stringhe

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Ingegneria del Software

Manipolazioni elementari di flussi di testo strutturati

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

STRINGHE: ARRAY DI CARATTERI! a p e \0

Esercitazione 4. Comandi iterativi for, while, do-while

Sottoprogrammi: astrazione procedurale

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Fondamenti di Informatica T1 Mappe

L utility Unix awk [Aho-Weinberger-Kernighan]

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Algoritmi su array / 2

Calcolare il massimo di una lista

Esempi di esercizi d esame

Corso di Fondamenti di Informatica Algoritmi su array / 2

Esercizi di programmazione in C

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

Istruzioni di ripetizione in Java 1

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

Strutturare il codice: sottoprogrammi

Distanza di Edit. Speaker: Antinisca Di Marco Data:

Input/output in C e in C++

Dott.ssa Adriana Pietramala. Dott.ssa Maria Vittoria Avolio

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

costruttori e distruttori

Introduzione al C. Stream e disk file

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Alfabeto ed elementi lessicali del linguaggio C

ARRAY E STRINGHE. G. Frosini Slide 1

Inizializzazione, Assegnamento e Distruzione di Classi

Individuazione di sottoproblemi

Blocchi funzione: FbModbusAsciiMs

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

PROGRAMMAZIONE AVANZATA JAVA E C. Massimiliano Redolfi. Lezione 7: Code, Stack, Liste PAJC. Ricerca. prof. Massimiliano Redolfi PAJC

Introduzione alla Programmazione ad Oggetti in C++

Corso di Fondamenti di Informatica

UNICODE. Marcello Barnaba 5/27/09 the terms of the GNU FDL Marcello Barnaba - Released under

Introduzione alla programmazione in C

Caratteri e stringhe Esercizi risolti

Visibilità dei Membri di una Classe

Programmazione Orientata agli Oggetti in Linguaggio Java

Input/output in C++: la libreria iostream Stringhe in C++: il tipo std::string

Array multidimensionali e stringhe

FILE BINARI FILE BINARI

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Compito di Fondamenti di Informatica

LP1 Lezione 13: i File in C. Maurizio Tucci

Strutture dati dinamiche in C (III)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Esercizio 1. Esercizio 2

Sistemi Operativi (M. Cesati)

Trattamento delle STRINGHE in C(++)

float somma_float(float a, float b) int get_ascii(char c)

1. Soluzione esercizio XYZ SpA

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Elementi di Programmazione in C++

Connessione ad internet

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

I tipi di dato astratti

Fondamenti di Programmazione

Arduino Quick Ethernet library Reference

Esercizi per il recupero del debito formativo:

Shell BASH. Variabili Redirezione

Consideriamo un vettore allocato dinamicamente

Informatica 3 secondo recupero 13 Settembre 2002

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

PROGRAMMAZIONE STRUTTURATA

Esercitazione sulle libpq - libreria C per PostgreSQL

Ambienti di sviluppo integrato

ARRAY. Cosimo Laneve

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Introduzione al Linguaggio C

Obiettivi di questa esercitazione

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Transcript:

La classe string La libreria standard del del C++ definisce la classe string, dichiarata in <string>, per la rappresentazione e manipolazione di stringhe. Tale classe evita agli utilizzatori tutte le problematiche di allocazione e de-allocazione dei buffer di caratteri Laboratorio di Informatica Antonio Monteleone 103

#include <string> La classe string - costruttori // costruisce una stringa vuota string(); // costruisce una copia della data stringa s string( const string& s ); // costruisce una stringa composta da length // caratteri ch string( size_type length, const char& ch ); // costruisce una stringa a partire dalla // c-stringa str. str viene duplicata string( const char* str ); Laboratorio di Informatica Antonio Monteleone 104

La classe string - costruttori // costruisce una stringa a partire dalla // c-stringa str. str viene duplicata // (al massimo length caratteri) string( const char* str, size_type length ); // costruisce una stringa a partire da una // sotto-stringa string( const string& str, size_type index, size_type length ); // costruisce una stringa a partire da un // range di iteratori string(input_iterator start,input_iterator end ); // distruttore ~string(); Laboratorio di Informatica Antonio Monteleone 105

La classe string - costruttori string str1( 6, 'c' ); string str2( "la mia prima stringa" ); string str3( str2, 8, 5 ); Laboratorio di Informatica Antonio Monteleone 106

La classe string lunghezza e capacity // restituiscono il numero di elementi nella stringa size_type length() const; size_type size() const; // restituisce true se la stringa non contiene // elementi, false altrimenti bool empty() const; // restituisce il numero di caratteri che la stringa // può contenere senza che sia necessario allocare // altra memoria size_type capacity() const; // restituisce il massimo numero di elementi che la stringa può contenere size_type max_size() const; Laboratorio di Informatica Antonio Monteleone 107

// modifica in size la dimensione della // stringa void resize(size_type size, const char& val= ); string s1; string s2(""); string s3("this is a string"); Laboratorio di Informatica Antonio Monteleone 108

La classe string - Concatenazione // appendono str alla fine della stringa corrente string& append( const string& str ); string& append( const char* str ); // appende una sotto-stringa che parte alla posizione index e di lunghezza len string& append( const string& str, size_type index, size_type len ); // appende num caratteri di str alla fine della stringa string& append( const char* str, size_type num ); // appende num copie del carattere ch alla fine // della stringa string& append( size_type num, char ch ); Laboratorio di Informatica Antonio Monteleone 109

La classe string - Concatenazione // appende la sequenza [start, end) alla // fine della stringa string& append( input_iterator start, input_iterator end ); string operator+(const string& s1,const string& s2 ); string operator+(const char* s, const string& s2 ); string operator+( char c, const string& s2 ); string operator+( const string& s1, const char* s ); string operator+( const string& s1, char c ); Laboratorio di Informatica Antonio Monteleone 110

La classe string - confronto //confronta la stringa corrente con str // Il valore 0 indica che le due stringhe sono uguali // Un valore < 0 indica che this precede str // nell'ordinamento lessicografico // Un valore > 0 indica che this segue str // nell'ordinamento lessicografico int compare( const string& str ); int compare( const char* str ); int compare( size_type index, size_type length, const string& str ); int compare( size_type index, size_type length, const string& str, size_type index2, size_type length2 ); int compare( size_type index, size_type length, const char* str, size_type length2 ); Laboratorio di Informatica Antonio Monteleone 111

La classe string - confronto bool operator==(const string& c1, const string& c2); bool operator!=(const string& c1, const string& c2); bool operator<(const string& c1, const string& c2); bool operator>(const string& c1, const string& c2); bool operator<=(const string& c1, const string& c2); bool operator>=(const string& c1, const string& c2); // conta gli elementi di names che precedono il valore di name string names[] = {"Antonio", "Luca", "Giacomo", "Anastasia", "Manuela"}; string name = "Gianni"; int count = 0; for(int i=0; i<5; i++ ) { if (names[i]<name) // if (names[i].compare(name) < 0) count++; } Laboratorio di Informatica Antonio Monteleone 112

La classe string accesso agli elementi // accede all'elemento index della stringa char& operator[]( size_type index ); // restituisce un riferimento all'elemento di posto loc // contrariamente a operator[] effettua un controllo sui // limiti della stringa sollevando un eccezione out_of_range char& at( size_type loc ); const char& at( size_type loc ) const; // restituisce la posizione della prima occorrenza di \ string::size_type pos = 0; string s="c:\\temp"; string::size_type l = s.length(); for (int i=0; i<l; ++i) if (s[i] == '\\') { pos = i; break; } Laboratorio di Informatica Antonio Monteleone 113

La classe string - inserimento // inseriscono str nella stringa corrente, nella posizione // index, string& insert( size_type index, const string& str ); string& insert( size_type index, const char* str ); // inserisce una sottostringa di str (che parte a index2 e // lunga num caratteri) nella stringa corrente, nella // posizione index1, string& insert( size_type index1, const string& str, size_type index2, size_type num ); // inserisce num caratteri di str nella stringa corrente, // nella posizione index string& insert( size_type index, const char* str, size_type num); // inserisce num copie di ch nella posizione index string& insert( size_type index, size_type num, char ch ); Laboratorio di Informatica Antonio Monteleone 114

Estrazione di una sottostringa // restituisce una sottostringa della stringa corrente, // a partire dalla posizione index e lunga length // caratteri string substr( size_type index, size_type length = npos ); Laboratorio di Informatica Antonio Monteleone 115

Cancellazione di una sottostringa // rimuove num caratteri dalla stinga corrente, //a partire dalla posizione index, e restituisce *this. string& erase( size_type index = 0, size_type num = npos ); Laboratorio di Informatica Antonio Monteleone 116

Sostituzione di una sottostringa // sostituisce, a partire dalla posizione index nella // stringa corrente, un massimo di num caratteri di str string& replace( size_type index, size_type num, const string& str ); // sostituisce, a partire dalla posizione index1 nella // stringa corrente, un massimo di num1 caratteri con // un massimo di num2 caratteri presi da str a partire // dalla posizione index2 string& replace( size_type index1, size_type num1, const string& str, size_type index2, size_type num2 ); Laboratorio di Informatica Antonio Monteleone 117

Ricerca di una sottostringa // restituiscono la posizione della prima occorrenza di str nella // stringa corrente a partire dalla posizione index restituisce // string::npos se str non è stata trovata size_type find( const string& str, size_type index ); size_type find( const char* str, size_type index ); // restituisce la posizione della prima occorrenza dei primi length // caratteri di str nella stringa corrente a partire dala posizione // index, resituisce string::npos se i caratteri non sono stati // trovati size_type find(const char* str, size_type index, size_type length ); // restituisce la posizione della prima occorrenza del carattere ch // nella stringa corrente a partire dala posizione index, // restituisce string::npos se ch non è stato trovato size_type find( char ch, size_type index ); Laboratorio di Informatica Antonio Monteleone 118

Ricerca di una sottostringa // come find, ma facendo una ricerca a ritroso a partire dalla posizione index size_type rfind( const string& str, size_type index ); size_type rfind( const char* str, size_type index ); size_type rfind( const char* str, size_type index, size_type num ); size_type rfind( char ch, size_type index ); // restituisce l'indice del primo carattere nella stringa corrente // che corrisponde a uno dei caratteri in str. La ricerca inizia // alla posizione index. Viene restituito string::npos se la ricerca // fallisce size_type find_first_of( const string &str, size_type index = 0 ); size_type find_first_of( const char* str, size_type index = 0 ); // il confronto si limita ai primi num caratteri di str size_type find_first_of( const char* str, size_type index, size_type num ); // viene cercato solo il carattere ch size_type find_first_of( char ch, size_type index = 0 ); Laboratorio di Informatica Antonio Monteleone 119

Ricerca di una sottostringa size_type find_last_of( const string& str, size_type index = npos ); size_type find_last_of( const char* str, size_type index = npos ); size_type find_last_of( const char* str, size_type index, size_type num ); size_type find_last_of( char ch, size_type index = npos ); size_type find_first_not_of( const string& str, size_type index = 0 ); size_type find_first_not_of( const char* str, size_type index = 0 ); size_type find_first_not_of( const char* str, size_type index, size_type num ); size_type find_first_not_of( char ch, size_type index = 0 ); size_type find_last_not_of( const string& str, size_type index = npos ); size_type find_last_not_of( const char* str, size_type index = npos); size_type find_last_not_of( const char* str, size_type index, size_type num ); size_type find_last_not_of( char ch, size_type index = npos ); Laboratorio di Informatica Antonio Monteleone 120