Dynamiska datatyper inte har en fast storlek . När en dator lagrar ett nummer , använder den samma antal byte att lagra numret " 0 " och numret " 20000 . " Men försök att spara en mening och de förändringar panorama dramatiskt . Eftersom varje mening har en annan längd , har minnet används för att lagra den meningen att ändras dynamiskt. Standard C innehöll inte en sträng datatyp , och utforma en dynamisk sträng datatyp ( eller string class ) har nästan blivit en övergångsrit av nya C /C + + -programmerare . Saker du behöver
Computer
C + + kompilator ( rekommenderad : Visual C + + Express )
Visa fler instruktioner
Design en strängklassen
1
Visualisera funktioner av din sträng klass . Din sträng måste ha följande : .
Dynamisk storlek ( förändringar med indata eller tilldelning ) katalog
kunna veta storleken på din sträng
Output strängen . lagras i minnet .
Store storleken .
Store första tecknet i vår sträng ( eftersom den är dynamisk , du vet inte var det slutar . )
2
Separat vilka funktioner i din sträng klass är informationen ( eller data ) och vilka som är funktioner . Vanligtvis är allt som innebär åtgärden en funktion . Från vår lista : .
Dynamisk storlek - > funktion baserad på hur du konstruerar en sträng
vet storleken på strängen - > Funktion
Utgång till . string - . > Funktion
Store storlek - . > data /information
Store i början av strängen - . > data /information
3
definiera rollen av varje funktion , och vilken typ av data som medlemmar i din klass i enkla termer . Från föregående lista :
Dynamic Storlek - Funktion - Konstruerar strängen
veta storleken - Funktion - Returns string storlek
Output strängen - Funktion - returnerar . . string innehåll
Store storlek - . uppgifter /information - måste vara ett positivt heltal
Store i början av strängen - . uppgifter /information - . en karaktär
Implementera strängklassen - Header File
4
Skapa en header -fil som heter mystring.h ( Arkiv - > Lägg till - > Header File ) . En header -fil är som ett index för din kod .
5
Definiera din klass i sidhuvudet filen . Detta är koden :
class MyString {
6
Skapa offentliga funktioner för att hantera alla funktioner i din design . Detta är koden :
allmänheten :
MyString ( ) , //skapar en tom sträng MyString
( const char * ) , //skapar och initierar strängen till ett visst värde ( i parentes ) katalog
~ MyString ( ), //deallokerar dynamiska minnesresurser
int getSize ( ), //visar oss storleken av strängen
char * outputmystring ( ) , //utgångar strängen
7
Skapa privata data medlemmar att lagra data i din sträng . Detta är koden :
privat :
int _size , //lagrar strängen storlek
char * _mystr , /* Detta är en data- medlem som pekar på första tecknet i strängen . Om vi vet det första tecknet och storleken på strängen , kan vi komma åt alla sina karaktärer * /
}
8
Skriv din fullständiga sidhuvudfilen kod ( du kan kopiera och klistra härifrån ) :
/* mystring.h * /
class MyString {
allmänheten :
MyString ( ) ;
MyString ( const char *),
~ MyString ();
int getSize ();
char * outputmystring ();
privat:
int _size ,
char * _mystr ,
}
Implementera strängklassen - Code File
9
Skapa ett matchande CPP fil som heter mystring.cpp ( Arkiv - > Lägg till - > cpp fil - tom fil ) . Här kommer du bland annat definitionerna för funktionen på mystring.h header-fil . Precis som en bok , header-filer lagrar de huvudsakliga tittles och cpp filer lagra innehållet och definitioner av varje bokstav .
10
Inkludera CString och iostream biblioteken . Detta är koden :
/* mystring.cpp * /
# include
# include
11 Definiera bygg funktioner ( tom konstruktion och parameter konstruktion ) . Här är koden :
MyString :: MyString ( ) //tom konstruktor
{
_size = 0 ;
_mystr = 0 ;
}
MyString :: MyString ( const char * str ) /* konstruktioner och initierar sträng till ett värde * /
{
if ( ! str )
{ _size = 0; _mystr = 0 ; } /* om inget värde är sträng tom * /
annat
{ _size = strlen ( str ) ;
_string = new char [ _size +1 ] ; /* detta är vår dynamisk minnesallokering , baserat på storleken på parametern * /
strcopy ( _string , str ) ;
}
}
12
Definiera destructor funktionen . Denna funktion används för att de- allokera det dynamiska minnet . Varje gång minnet som används förändringar måste datorn veta att den kan använda den del av minne för andra ändamål, denna process kallas avallokering . Koden :
MyString :: ~ MyString
{ radera [ ] _mystr ;} /* avallokerar vår dynamiska minne * /
13
Definiera funktionen att returnera strängen storlek och ljusflöde strängen. Storleken är enkel. Bara visa värdet av _size :
int MyString :: getSize ( ) {return ( _size ) ;}
att mata strängen , kommer vi mata varje tecken tills vi når slutet av string ( som råkar vara värdet av _size ) :
void MyString :: outputmystring ( ) katalog
{ for ( int count = 0; count == storlek , count + + ) katalog
{ cout << _mystr [ count ] ; }
cout << endl; }
14
Här är din kompletta koden för mystring.cpp :
/* mystring.cpp * /
inkluderar #
# include
MyString :: MyString ( ) //tom constructor
{
_size = 0 ;
_mystr = 0 ;
}
MyString :: MyString ( const char * str ) /* konstruktioner och initierar sträng till ett värde * /
{
if ( str ) katalog
{ _size = 0 ; ! _mystr = 0 ; } /* om ingen värde , sträng är tom * /
annat
{ _size = strlen ( str ) ;
_string = new char [ _size +1 ] ; /* detta är vårt dynamiska minnesallokering, baserat på storleken av parametern * /
strcopy ( _string , str ) ;
}
}
MyString :: ~ MyString
{ radera [ ] _mystr ;} /* avallokerar vår dynamiska minne * /
int MyString :: getSize ( ) {return ( _size ) ;}
void MyString : : outputmystring ( ) katalog
{ for ( int count = 0; count == storlek , count + + ) katalog
{ cout << _mystr [ count ] ; }
cout << endl ; } Addera