Hoe maak je een dynamische String in C ++ aanmaken

Hoe maak je een dynamische String in C ++ aanmaken


Dynamische data types hebben geen vaste grootte. Wanneer een computer slaat een getal, gebruikt hetzelfde aantal bytes aan het getal "0" en het nummer "20000" slaan Maar probeer om een ​​zin op te slaan en het panorama drastisch verandert. Aangezien elke zin is een andere lengte, hanteren om het geheugen opslaan zin moet dynamisch wijzigen. Standard C omvatten niet een string datatype, en het ontwerpen van een dynamische reeks data type (of klasse String) is uitgegroeid tot bijna een rite de passage van elke nieuwe C / C ++ programmeur.

instructies

Ontwerp een String Class

1 Visualiseer de functies van uw klasse String. String moet het volgende:

Dynamic grootte (veranderingen met input van de gebruiker, of opdracht).

In staat zijn om de grootte van uw snaar weten.

De string opgeslagen.

Bewaar de grootte.

Sla de eerste letter van onze string (want het is dynamisch, je weet niet waar het eindigt.)

2 Afzonderlijke welke functies van uw klasse String zijn gegevens (of data) en welke functies. Meestal iets dat actie zich een functie is. Uit onze lijst:

Dynamic grootte -> Functie op basis van hoe maak je een string te bouwen.

Weten de grootte van de string -> functie.

De string -> functie.

Bewaar de grootte -> data / informatie.

Bewaar het begin van de string -> data / informatie.

3 Definieer de rol van elke functie en de aard van de gegevens leden van de klasse in eenvoudige bewoordingen. Uit de vorige lijst:

Dynamic Size - Functie - Construeert de string.

Ken de grootte - Function - Geeft string grootte.

De string - Functie - Geeft de inhoud string.

Sla de grootte - data / informatie - moet een positief geheel getal zijn.

Bewaar het begin van de string - gegevens / informatie - een teken.

Uitvoering van het String Class - Header File

4 Maak een header bestand genaamd mystring.h (File -> Add -> Header File). Een header-bestand is als een index voor uw code.

5 Definieer je klas in de header file. Dit is de code:

class MyString {

6 Maak publieke functies tot alle functies in uw ontwerp aan te pakken. Dit is de code:

openbaar:

MyString (); // Leidt tot een lege string

mystring (const char *); // Creëert en initialiseert de string naar een bepaalde waarde (tussen haakjes)

~ MyString (); // Deallocates dynamische bronnen geheugen

int getSize (); // Toont de omvang van de tekenreeks

char * outputmystring (); // Voert het koord

7 Maak een prive-gegevens leden om de gegevens van de string op te slaan. Dit is de code:

private:

int _size; // Slaat de string formaat

char

_mystr; / Dit is een data-lid die verwijst naar het eerste teken van de string. Als we het eerste teken en de grootte van de code kennen, kunnen we toegang alle tekens * /

}

8 Typ uw volledige header-bestand code (u kunt kopiëren en plakken vanaf hier):

/

Mystring.h /

class MyString {

openbaar:

MyString ();

mystring (const char *);

~ MyString ();

int getSize ();

char * outputmystring ();

private:

int _size;

char * _mystr;

}

Uitvoering van het String Class - Code File

9 Ontwerp een huisstijl CPP bestand genaamd mystring.cpp (Bestand> Add -> cpp bestand - leeg bestand). Hier vindt u onder meer de definities voor de functie op de mystring.h header file. Net als een boek, header bestanden op te slaan de belangrijkste tittles en cpp bestanden op te slaan van de inhoud en definities van elke tittel.

10 Neem de CString en iostream bibliotheken. Dit is de code:

/

Mystring.cpp /

omvatten <CString> onder <iostream> 11 Definieer de bouw functies (lege bouw en parameter constructie). Hier is de code:

mystring :: MyString () // Leeg aannemer

{

_size = 0;

_mystr = 0;

}

mystring :: mystring (const char

str) / bouwt en initialiseert string naar een waarde * /

{

if (! str)

{_size = 0; _mystr = 0;} / als er geen waarde, string is leeg /

anders

{_size = Strlen (str);

_string = new char [_size 1]; / Is onze dynamische geheugentoewijzing, gebaseerd op de grootte van de parameter /

strcopy (_string, str);

}

}

12 Definieer de destructor functie. Deze functie wordt gebruikt om de-toewijzen het dynamisch geheugen. Telkens wanneer de gebruikte geheugen gewijzigd, moet de computer weten dat dat deel van het geheugen voor andere doeleinden kan gebruiken; dit proces wordt de toewijzing. De code:

myString :: ~ MyString

{Delete [] _mystr; } /

Deallocates onze dynamisch geheugen /

13 Definieer de functie om de string grootte en de string terug. De grootte is eenvoudig. Gewoon weer de waarde van _size:

int mystring :: getSize () {return (_size); }

Om de string, zullen we de uitgang elk teken totdat we bij het einde van de string (die toevallig ook de waarde van _size zijn):

leegte mystring :: outputmystring ()

{For (int count = 0; count == grootte; tel ++)

{Cout << _mystr [count];}

cout << endl; }

14 Hier is uw complete code voor mystring.cpp:

/ Mystring.cpp /

omvatten <CString> onder <iostream>

mystring :: MyString () // Leeg aannemer

{

_size = 0;

_mystr = 0;

}

mystring :: mystring (const char str) / bouwt en initialiseert string naar een waarde * /

{

if (! str)

{_size = 0; _mystr = 0;} / als er geen waarde, string is leeg /

anders

{_size = Strlen (str);

_string = new char [_size 1]; / Is onze dynamische geheugentoewijzing, gebaseerd op de grootte van de parameter /

strcopy (_string, str);

}

}

myString :: ~ MyString

{Delete [] _mystr; } / Deallocates onze dynamisch geheugen /

int mystring :: getSize () {return (_size); }

leegte mystring :: outputmystring ()

{For (int count = 0; count == grootte; tel ++)

{Cout << _mystr [count];}

cout << endl; }

Hints

  • U kunt altijd verbeteren van uw mystring klas door het toevoegen van functies en operatoren. Wees voorzichtig bij het typen, kunnen zelfs kleine fouten fouten die zeer moeilijk op te sporen zijn te veroorzaken.