July 12
I tipi di dati dinamici non hanno una dimensione fissa. Quando un computer memorizza un numero, che utilizza lo stesso numero di byte per memorizzare il numero "0" e il numero "20000." Ma cerca di memorizzare una frase e il panorama cambia radicalmente. Poiché ogni frase ha una lunghezza diversa, la memoria utilizzata per memorizzare la frase deve cambiare dinamicamente. Standard C non ha incluso un tipo di dati String, e la progettazione di una dinamica tipo di dati stringa (o classe string) è diventato quasi un rito di passaggio di ogni nuovo / C ++ programmatore C.
1 Visualizza le caratteristiche della vostra classe string. La stringa deve avere il seguente:
dimensione dinamica (cambiamenti con l'input dell'utente, o assegnazione).
Essere in grado di conoscere la dimensione della stringa.
Uscita la stringa memorizzata nella memoria.
Conservare le dimensioni.
Conservare il primo carattere della nostra stringa (dal momento che è dinamica, non si sa dove si finisce.)
2 A parte che le caratteristiche della vostra classe string sono informazioni (o dati) e quali sono le funzioni. Di solito, tutto ciò che comporta azione è una funzione. Dalla nostra lista:
dimensione dinamica -> funzione in base a come si fa a costruire una stringa.
Conoscere la dimensione della stringa -> Funzione.
Uscita la stringa -> Funzione.
Conservare la dimensione -> dati / informazioni.
Conservare l'inizio della stringa -> dati / informazioni.
3 Definire il ruolo di ogni funzione, e il tipo di dati membri della classe in termini semplici. Dalla lista precedente:
Dinamico Size - Funzione - Costruisce la stringa.
Conoscere la dimensione - funzione - Restituisce formato stringa.
Uscita la stringa - Funzione - Restituisce il contenuto della stringa.
Conservare le dimensioni - dati / informazioni - deve essere un numero intero positivo.
Conservare l'inizio della stringa - dati / informazioni - un personaggio.
4 Creare un file di intestazione chiamato MyString.h (File -> Aggiungi -> File di intestazione). Un file di intestazione è come un indice per il codice.
5 Definire la classe nel file di intestazione. Questo è il codice:
class mystring {
6 Creare funzioni pubbliche per affrontare tutte le funzioni nel vostro disegno. Questo è il codice:
pubblico:
MyString (); // Crea una stringa vuota
mystring (const char *); // Crea e inizializza la stringa di un certo valore (in parentesi)
~ Mystring (); // Dealloca risorse di memoria dinamica
int getsize (); // Ci mostra la dimensione della stringa
char * outputmystring (); // Uscite la stringa
7 Crea membri di dati privati per memorizzare i dati della stringa. Questo è il codice:
privato:
int _size; // Memorizza la dimensione della stringa
char
_mystr; / Questo è un membro di dati che punta al primo carattere della stringa. Se conosciamo il primo carattere e la dimensione della stringa, possiamo accedere a tutti i suoi caratteri * /
}
8 Digitare il codice completo file di intestazione (è possibile copiare e incollare da qui):
/
MyString.h /
class mystring {
pubblico:
MyString ();
mystring (const char *);
~ Mystring ();
int getsize ();
char * outputmystring ();
privato:
int _size;
char * _mystr;
}
9 Creare un file corrispondente CPP chiamato MyString.cpp (File-> Aggiungi -> file cpp - file vuoto). Qui, si comprendono le definizioni per la funzione file di intestazione MyString.h. Proprio come un libro, i file di intestazione memorizzano le principali tittles e file CPP memorizzare il contenuto e le definizioni di ogni apice.
10 Includere il CString e le librerie iostream. Questo è il codice:
/
MyString.cpp /
includere <CString> includere <iostream> 11 Definire le funzioni di costruzione (costruzione vuota e la costruzione dei parametri). Ecco il codice:
mystring :: mystring () // costruttore vuoto
{
_size = 0;
_mystr = 0;
}
mystring :: mystring (const char
str) / costrutti e inizializza stringa in un valore * /
{
if (str!)
{_size = 0; _mystr = 0;} / se nessun valore, stringa è vuota /
altro
{_size = Strlen (str);
_string = new char [_size +1]; / Questa è la nostra allocazione dinamica della memoria, in base alle dimensioni del parametro /
strcopy (_string, str);
}
}
12 Definire la funzione di distruttore. Questa funzione viene utilizzata per de-allocare la memoria dinamica. Ogni volta che la memoria utilizzata modifiche, il computer deve sapere che può utilizzare la parte della memoria per altri scopi; questo processo è chiamato de-allocazione. Il codice:
mystring :: ~ mystring
{Eliminare _mystr []; } /
Dealloca nostra memoria dinamica /
13 Definire la funzione per restituire la dimensione della stringa e l'uscita della stringa. Il formato è semplice. Basta visualizzare il valore di _size:
int mystring :: getsize () {return (_size); }
Per produrre la stringa, ci sarà l'uscita ogni personaggio fino a raggiungere la fine della stringa (che risulta essere il valore di _size):
mystring vuoto :: outputmystring ()
{For (int count = 0; count == dimensioni; contare ++)
{Cout << _mystr [count];}
cout << endl; }
14 Qui è il codice completo per MyString.cpp:
/ MyString.cpp /
includere <CString> includere <iostream>
mystring :: mystring () // costruttore vuoto
{
_size = 0;
_mystr = 0;
}
mystring :: mystring (const char str) / costrutti e inizializza stringa in un valore * /
{
if (str!)
{_size = 0; _mystr = 0;} / se nessun valore, stringa è vuota /
altro
{_size = Strlen (str);
_string = new char [_size +1]; / Questa è la nostra allocazione dinamica della memoria, in base alle dimensioni del parametro /
strcopy (_string, str);
}
}
mystring :: ~ mystring
{Eliminare _mystr []; } / Dealloca nostra memoria dinamica /
int mystring :: getsize () {return (_size); }
mystring vuoto :: outputmystring ()
{For (int count = 0; count == dimensioni; contare ++)
{Cout << _mystr [count];}
cout << endl; }