tipi di dati dinamici non hanno una dimensione fissa . Quando un computer memorizza un numero , utilizza lo stesso numero di byte per memorizzare il numero " 0 " e il numero " 20000 ". Ma provate a memorizzare una frase e il panorama cambia radicalmente. Dal momento che ogni frase ha una lunghezza diversa , la memoria utilizzata per memorizzare la frase deve cambiare in modo dinamico . Standard C non ha incluso un tipo di dati stringa , e la progettazione di un tipo di dati stringa dinamica ( o di classe string ) è diventato quasi un rito di passaggio di ogni nuovo programmatore C + C /+ . Cose che ti serviranno 
 Informatica C + + Compiler (consigliato : Visual C + + Express ) economici Mostra più istruzioni 
 Progettazione di una stringa di Classe 
 1 
 visualizzare le caratteristiche della classe string . La stringa deve avere le seguenti : . 
 
 Dimensione dinamico ( cambia con l'input dell'utente , o assegnazione ) per 
 in grado di conoscere la dimensione della vostra stringa 
 
 uscita la stringa . memorizzato. 
 
 Conservare le dimensioni . 
 
 memorizzare il primo carattere della nostra stringa ( dato che è dinamico , non si sa dove finisce. ) economici 2 < p > separato che dispone della classe string sono informazioni ( o dati) e quali sono le funzioni . Solitamente , tutto ciò che comporta l'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 il . stringa - . > Funzione 
 
 Conservare le dimensioni - . > dati /informazioni 
 
 Conservare l' inizio della stringa . - > dati /informazioni 
 3 
 definire il ruolo di ogni funzione , e il tipo di dati membro della classe in termini semplici . Dalla lista precedente : 
 
 dinamica Dimensione - Funzione - Costruisce la stringa 
 
 conoscere la dimensione - Funzione - restituisce la dimensione di 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 - . carattere 
 
 Implementazione della classe String - File Header 
 4 
 Creare un file header chiamato mystring.h ( File - > Aggiungi - > File di intestazione ) . Un file di intestazione è come un indice per il vostro codice . 
 5 
 Definire la classe nel file di intestazione . Questo è il codice : 
 classe 
 mystring { 
 6 
 Creare funzioni pubbliche per affrontare tutte le funzioni nella progettazione. Questo è il codice : 
 
 pubblico : 
 
 mystring ( ) ; //crea una stringa vuota 
 
 mystring ( const char * ) ; //crea e inizializza la stringa di certo valore ( tra parentesi ) per 
 ~ mystring (); //dealloca risorse di memoria dinamica 
 
 int getSize ( ) ; //ci mostra la dimensione della stringa 
 
 char * outputmystring (); //output la stringa 
 7 
 Creare dati membro privati per memorizzare i dati della vostra stringa. Questo è il codice : 
 
 privato : 
 
 int _size ; //memorizza la stringa di formato 
 
 char * _mystr ; /* questo è un membro di dati che punta al primo carattere della stringa . Se sappiamo che il primo carattere e la dimensione della stringa , si può accedere a tutti i suoi caratteri * /
 
 } 
 8 
 Digitare il codice del file di intestazione completa ( è possibile copiare e incollare da qui ) : 
 
 /* mystring.h * /
 classe 
 mystring { 
 
 pubblico : 
 
 mystring ( ) ; 
 
 mystring ( const char *) ; 
 
 ~ mystring (); 
 
 int getsize (); 
 
 char * outputmystring (); 
 
 privato : 
 
 int _size ; 
 
 char * _mystr ; 
 
 } 
 Implementare la classe String - Codice File 
 9 < p > Creare un file CPP corrispondente chiamato mystring.cpp ( File - > Aggiungi - > file cpp - file vuoto ) . Qui , potrete includere le definizioni per la funzione del file di intestazione mystring.h . Proprio come un libro , file header memorizzano i principali tittles , e cpp file memorizzano i contenuti e le definizioni di ciascun apice . 
 10 
 Includere il cstring e librerie iostream . Questo è il codice : 
 
 /* mystring.cpp * /# include 
 
  
  # include  
 11 < p > Definire le funzioni di costruzione ( costruzione di vuoto e di costruzione del parametro ) . Ecco il codice : 
  mystring :: mystring ( ) //costruttore vuoto 
 
 { 
 
 _size = 0; 
 
 _mystr = 0 ; < br 
 } 
 
 mystring > :: mystring (const char * str ) /* costruisce e inizializza stringa in un valore * /
 
 { 
 
 if (! str) 
 
 { _size = 0; _mystr = 0; } /* se nessun valore , stringa è vuota * /
 
 altro 
 
 { _size = strlen ( str) ; < br > 
 _string = new char [ _size +1 ] ; /* questa è la nostra allocazione dinamica della memoria , in base alla dimensione del parametro * /
 
 StrCopy ( _string , str) ; 
 < p > } } 
 
 
 12 
 definire la funzione distruttore . Questa funzione viene utilizzata per de- allocare la memoria dinamica . Ogni volta che la memoria utilizzata modifiche , il computer deve sapere che può usare quella parte di memoria per altri scopi , questo processo è chiamato deallocazione . Il codice : 
 
 mystring :: ~ mystring 
 
 { eliminare [ ] _mystr ; } /* dealloca nostra dinamica di memoria * /
 13 
 definire la funzione di restituire la dimensione della stringa e la stringa di output . Il formato è semplice. Basta visualizzare il valore di _size : 
 
 int mystring :: getsize ( ) {return ( _size );} 
 
 Per emettere la stringa , si produce ogni singolo personaggio fino a quando si raggiunge la fine del stringa ( che risulta essere il valore di _size ) : 
 
 vuoto mystring :: outputmystring ( ) per 
 {for ( int count = 0; count == dimensioni ; count + + ) per < p > { cout << _mystr [ count] ; } 
 
 cout << endl; } 
 14 
 Ecco il codice completo per mystring.cpp : < br > 
 /* mystring.cpp * /# include 
 
  
  # include  
  mystring :: mystring ( ) //Vuoto costruttore 
 
 { 
 
 _size = 0; 
 
 _mystr = 0; } 
 
 
 
 mystring :: mystring ( const char * str ) /* costruisce e inizializza stringa in un valore * /
 
 { 
 
 if ( str ) per 
 { _size = 0; ! _mystr = 0; } /* se non valore , stringa è vuota * /
 
 altro 
 
 { _size = strlen ( str) ; 
 
 _string = new char [ _size +1 ] ; /* questo è il nostro dinamico allocazione della memoria , in base alla dimensione del parametro * /
 
 StrCopy ( _string , str) ; } 
 
 
 
 } 
 
 mystring :: ~ mystring 
 
 { eliminare [ ] _mystr ; } /* dealloca nostra dinamica di memoria * /
 
 int mystring :: getsize ( ) {return ( _size );} 
 
 vuoto mystring : : outputmystring ( ) per 
 {for ( int count = 0; count == dimensioni ; count + + ) per 
 { cout << _mystr [ count] ; } 
 
 cout << endl; }