Corso di Visual C++

Classi non derivanti da Cobject (CString)

 

Salve a tutti.
La volta scorsa abbiamo visto le potenzialit della classe generica CObject.
Analizzando il codice sicuramente avrete visto che nella classe CClassB ho utilizzato (semplicemente x distinguerla dalla classe CClassA ) il membro m_str che altro non era che una stringa di massimo 9 caratteri (uno carattere come sapete dal corso di C riservato per il terminatore di fine stringa \0).
La domanda che ora sorge :
-E’ se dovessi immettere una stringa di oltre 9 caratteri?
-Esiste una classe delle MFC che ci consentano di creare una stringa arbitraria e dinamicamente modificabile in grandezza?

La risposta si. Tale classe detta CString e la analizzeremo in questa lezione.

Da premettere che tale classe non deriva da CObject ma data la sua importanza nella programmazione conviene fare un piccolo stacco dalle classi derivanti da CObject per analizzarla (Torneremo nelle prossime lezioni ad analizzare le classi derivanti da CObject con + esperienza delle MFC e con la potenza della conoscenza di questa nuova classe).

Alla fine della lezione troverete i sorgenti di un piccolo programmino che motra la potenza della classe CString stessa.

Bene, analizziamo alcuni metodi della classe. Alcuni di questi metodi verranno usati nel nostro esempio a fine pagina.
Per maggiori riferimenti consultare le MSDN della Microsoft.

CString

Construttori

CString()

Costruttore di default

CString(const CString& src)

Costruttore per copia (Copia il contenuto della CString src nella nuova stringa allocata)

CString(TCHAR carattere, int numerorip=1)

Crea la nuova CString assegnandogli numerorip di caratteri (carattere)
Es.: CString str(‘a’,5); // crea la stringa “aaaaa”

CString(LPCSTR lpstr, int lunghezza)

Crea la nuova CString dalla CString lpstr copiandovi solo i primi “lunghezza” caratteri
Es.:
CString prova(“balenottera”);
CString str(prova,6); // crea la stringa “baleno”





Metodi utili

int GetLength() const

Restituisce il numero di caratteri presenti nella stringa
Es.: CString str(“casetta”);
int len;
len=str.GetLength(); //assegna a len il valore 7

BOOL IsEmpty() const

Restituisce TRUE se la string vuota, FALSE altrimenti

void Empty();

Resetta la stringa portandola a lunghezza nulla (stringa vuota)

TCHAR GetAt(int id) const

Restituisce il carattere alla posizione id
Simile all’operatore []
Es.: CString str(“aeiou”);
char t;
t=str.GetAt(2); // assegna a t il carattere ‘i’
t=str[2]; //assegna a t il carattere ‘i’

TCHAR operator [](int id) const

Come la GetAt

void SetAt(int id, TCHAR c)

Setta il carattere c alla posizione id della stringa
Es.: CString str(“Salto”);
str.SetAt(2,’r’); // str da “Salto” diventa “Sarto”

operator LPCSTR() const

Accesso diretto alla memoria allocate nella stringa, utile nelle conversioni da CString a char []


Assegnamenti, Concatenatori e Metodi di Confronto

const CString& operator = (const CString& src)

Assegna alla nuova string ail valore contenuto in src
Es.: CString str(“pippo”);
CString str2(“pluto”);
str=str2; //sia str che str2 valgono “pluto”

friend CString operator + (const CString& src1, const CString& src2)

Concatena 2 stringhe.
Es.: CString dest;
CString str1(“Arco”);
CString str2(“baleno”);
dest=str1+str2; //dest vale “Arcobaleno”

constCString& operator +=( const CString& string );
throw( CMemoryException )

Concatena alla stringa su cui applicato la nuova stringa string
Es.: CString str1(“Arco”);
CString str2(“baleno”);
str1+=str2; //str1 vale “Arcobaleno”

BOOLoperator ==( const CString& s1, const CString& s2 );

Restituisce TRUE se le due stringhe s1 e s2 sono uguali, FALSE altrimenti



Estrazione di sotto stringhe

CString Mid(int primo, int cnt) const

Estrae dalla stringa la sottostringa che parte dalla posizione primo ed composta da cnt caratteri
Es.: CString str(“arcobaleno”);
CString dst;
dst=str.Mid(0,4); // dst vale “arco”
dst=str.Mid(4,6); //dst vale “baleno”

CString Left(int cnt) const

Estrai i primi cnt caratteri dalla stringa partendo da sinistra
Es.: CString str(“arcobaleno”);
CString dst;
dst=str.Left(4); // dst vale “arco”

CString Right(int cnt) const

Estrai i primi cnt caratteri dalla stringa partendo da destra
Es.: CString str(“arcobaleno”);
CString dst;
dst=str.Right(6); // dst vale “baleno”

Conversioni e ricerca

void MakeUpper()

Converte tutti i caratteri della stringa in Maiuscolo

void MakeLower()

Converte tutti i caratteri della stringa in Minuscolo

void MakeReverse()

Inverte la stringa

int Insert(int pos, TCHAR ch)
e
int Insert(int pos, LPCSTR pstr)

Inserisce nella posizione pos della stringa il carattere ch o nell’altra versione la stringa pstr

int Delete(int pos, int numc)

Cancella dalla stringa numc caratteri a partire dal carattere in posizione pos

void Format(LPCSTR formato,…)

Formatta la stringa come la funzione printf del Linguaggio C
Es.: int c=3;
CString dest;
dest.Format(“Ora valgo %d“,c);// dest “Ora valgo 3”

int Find(TCHAR ch, int pos) const
e
int Find(LPCSTR pstr, int pos)

Trova il carattere ch o la sottostringa pstr a partire dal carattere nella posizione pos




Bene, nell’esempio allegato troverete gli utilizzi di queste funzioncine.
A voi il compito di analizzarne i sorgenti come esercizio, io gi ho fatto il mio compito nel fare il programma.
E poi sapete, sono nato stanco e vivo per riposare :-)

Vabb v, vi mostro nel frattempo che il vostro modem 56K scarichi il mio programmino la schermata principale va.
E poi non dite che so’ cattivo ok?


 

Torna all'indice Generale del corso di Corso di Visual C++ di Software Planet