Dynamische Datentypen nicht eine feste Größe. Wenn ein Computer eine Zahl speichert , verwendet es die gleiche Anzahl von Bytes, die die Zahl " 0" und der Nummer speichern " 20000 . " Aber versuchen Sie , einen Satz und das Panorama ändert sich dramatisch zu speichern. Da jeder Satz eine unterschiedliche Länge hat der Speicher verwendet werden, um den Satz zu speichern, um dynamisch zu ändern . Standard-C nicht enthalten einen String Datentyp und Gestaltung eines dynamischen String-Datentyp (oder String-Klasse ) ist fast schon ein Ritual des Übergangs eines neuen C /C + +-Programmierer . Things You
Computer brauchen C + + Compiler (empfohlen: Visual C + + Express)
anzeigen Weitere Anweisungen Military Design ein String-Klasse
1
Visualisieren Sie die Eigenschaften Ihrer String-Klasse . Ihr String muss die folgende : .
Dynamische Größe ( Änderungen mit Benutzereingaben oder Zuweisung)
der Lage sein , um die Größe der Zeichenfolge wissen
Ausgabe der Zeichenfolge. im Speicher abgelegt.
Shop die Größe .
Shop das erste Zeichen unserer string ( da es dynamisch ist , wissen Sie nicht, wo es endet. )
2 < p> Separate welche Ihrer String-Klasse verfügt über Informationen sind ( oder Daten) und welche Funktionen . Normalerweise ist alles, was Aktion beinhaltet eine Funktion . Aus unserer Liste : .
Dynamische Größe -> Funktion auf , wie Sie konstruieren einen String basierend
Kennen Sie die Größe der Zeichenfolge -> Funktion
Ausgabe der . string - . > Funktion
Shop die Größe - . > Daten /Informationen
Shop der Anfang des Strings - . > Daten /Informationen
3
definieren die Rolle der einzelnen Funktionen und die Art der Daten Mitglieder Ihrer Klasse in einfachen Worten . Von der vorherigen Liste :
Dynamische Größe - Funktion - Erzeugt den String
Kennen Sie die Größe - Funktion - Gibt string Größe
Ausgang der String - Funktion - die Versandkosten . . String-Inhalt
Shop die Größe - . Daten /Informationen - muss eine positive ganze Zahl sein
Shop der Anfang des Strings - . Daten /Informationen - . ein Zeichen
die Umsetzung der String-Klasse - Header-Datei
4
erstellen eine Header-Datei namens MyString.h (File -> Add - > Header-Datei ) . Eine Header-Datei ist wie ein Index für den Code .
5
Definieren Sie Ihre Klasse in der Header-Datei . Dies ist der Code :
Klasse mystring {
6
erstellen öffentliches Funktionen , um alle Funktionen in Ihrem Design anzusprechen. Dies ist der Code :
public:
mystring (); //Erstellt einen leeren String
mystring (const char *) //erstellt und initialisiert den String einige (in der Klammer )
~ mystring (); //Speicherfreigabe dynamische Speicher-Ressourcen
int GetSize (); //zeigt uns die Größe der Zeichenfolge
char * outputmystring (); //gibt die Zeichenfolge
7
erstellen Sie private Daten Mitgliedern , um die Daten der Zeichenfolge speichern. Dies ist der Code :
private: int
_size //speichert den String Größe
char * _mystr /* dies ist ein Mitglied von Daten , die auf den ersten Zeichen des Strings . Wenn wir das erste Zeichen und die Größe des Strings kennen, können wir auf alle seine Zeichen * /Tablet
}
8
Geben Sie Ihren vollständigen Header-Datei Code (Sie können kopieren und einfügen von hier ):
/* MyString.h * /Tablet
Klasse mystring {
public:
mystring ();
mystring (const char *) ;
~ mystring ();
int GetSize ();
char * outputmystring ();
private:
int _size ;
char * _mystr ;
}
Umsetzung der String-Klasse - Code Datei
9
erstellen Sie einen passenden CPP Datei namens MyString.cpp (File - > Add -> CPP-Datei - leere Datei ) . Hier finden Sie die Definitionen für die Funktion auf der MyString.h Header-Datei . Genau wie ein Buch , Header-Dateien speichern die wichtigsten Pünktchen und CPP-Dateien speichern die Inhalte und Definitionen der einzelnen Pünktchen .
10
Fügen Sie die cstring und iostream Bibliotheken. Dies ist der Code :
/* MyString.cpp * /Tablet
# include
# include
11 < p> Definieren Sie die Bau -Funktionen (leer Bau und Parameter Bau). Hier ist der Code :
mystring :: mystring () //Leerer Konstruktor
{
_size = 0;
_mystr = 0;
}
mystring :: mystring (const char * str) /* Konstrukte und initialisiert String in einen Wert * /Tablet
{
if (! str)
{ _size = 0; _mystr = 0; } /* wenn kein Wert ist die Zeichenkette leer * /Tablet
sonst
{ _size = strlen ( str) ;
_string = new char [ _size +1] ; /* das ist unsere dynamische Speicherzuweisung , basierend auf der Größe des Parameters * /Tablet
strcopy ( _string , str );
< p >} }
12
Definieren Sie die Funktion destructor . Diese Funktion wird verwendet, um de - Zuweisung der dynamischen Speicher . Jedes Mal, wenn der Speicher, ändert , muss der Computer wissen, dass es den Teil des Speichers für andere Zwecke zu verwenden , das Verfahren wird als die Aufhebung der Zuordnung . Der Code :
mystring :: ~ mystring
{ delete [ ] _mystr ; } /* Speicherfreigabe unserer dynamischen Speicher * /
13
Definieren Sie die Funktion zur Rückkehr der String Größe und Leistung der String . Die Größe ist unkompliziert. Gerade zeigt den Wert von _size :
int mystring :: GetSize () {return ( _size );}
Um den String auszugeben , werden wir die einzelnen Zeichen auszugeben , bis wir das Ende der Reichweite string ( was passiert mit dem Wert von _size sein ):
nichtig mystring :: outputmystring ()
{ for (int count = 0; Zählung == Größe ; count + +)
< p> { cout << _mystr [count] ;}
cout << endl; }
14
Hier ist Ihre komplette Code für MyString.cpp :
/* MyString.cpp * /Tablet
# include
# include
mystring :: mystring () //Leer Konstruktor
{
_size = 0;
_mystr = 0; }
mystring :: mystring (const char * str ) /* Konstrukte und initialisiert String in einen Wert * /Tablet
{
if ( str) {
_size = 0; ! _mystr = 0; } /* wenn keine Wert , String leer ist * /Tablet
sonst
{ _size = strlen ( str) ;
_string = new char [ _size +1] ; /* das ist unsere dynamische Speicherzuweisung , basierend auf der Größe des Parameters * /Tablet
strcopy ( _string , str ); }
}
mystring :: ~ mystring
{ delete [ ] _mystr ; } /* Speicherfreigabe unserer dynamischen Speicher * /Tablet
int mystring :: GetSize () {return ( _size );}
nichtig mystring : : outputmystring ()
{ for (int count = 0; Zählung == Größe ; count + +) {
cout << _mystr [count] ;}
cout << endl; }