Come creare una stringa dinamica in C ++

July 12

Come creare una stringa dinamica in C ++


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.

istruzione

Progettare una classe String

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.

Attuare il String Class - File di intestazione

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;

}

Attuare il String Class - file di codice

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; }

Consigli e avvertenze

  • È sempre possibile migliorare il classe mystring con l'aggiunta di funzioni e operatori. Fare attenzione durante la digitazione, anche i piccoli errori possono causare errori che sono molto difficili da rintracciare.