Dynamiske datatyper ikke har en fast størrelse . Når en datamaskin lagrer et nummer , bruker det samme antall byte for å lagre nummeret "0" og tallet " 20000 ". Men prøv å lagre en setning og panorama endres dramatisk . Siden hver setning har forskjellig lengde , har de brukes til å lagre setningen for å endres dynamisk . Standard C inkluderte ikke en streng datatype , og utforme en dynamisk streng datatype ( eller streng klasse) har nesten blitt en overgangsrite av eventuelle nye C /C + + programmerer . Du trenger
Computer
C + + Compiler ( anbefalt: Visual C + + Express)
Vis flere instruksjoner
Design en String klasse
en
Visualiser funksjonene av strengen klassen . Din streng må ha følgende: .
Dynamic størrelse ( endringer med brukerundersøkelser, eller oppdrag )
Kunne vite størrelsen på strengen din
Output strengen . lagret i minnet .
Oppbevar størrelse.
Lagre det første tegnet i strengen vår (siden det er dynamisk , trenger du ikke vet hvor det ender . )
2 < p> Separat hvilke funksjoner i din string klassen er informasjon (eller data) og hvilke som er funksjoner. Vanligvis er noe som involverer handling en funksjon . Fra vår liste : .
Dynamisk størrelse - > Funksjon basert på hvordan konstruere du en streng
vet størrelsen på strengen - > Funksjon
Output . string - . > Funksjon
Oppbevar størrelse - . > data /informasjon
butikken i begynnelsen av strengen - . > data /informasjon
3
definere rollen til hver funksjon , og hvilken type data medlemmer av klassen din på en enkel måte . Fra den forrige listen : en
Dynamisk Size - Funksjon - Konstruerer strengen
Kjenn størrelse - Funksjon - Returns streng størrelse
Output strengen - Funksjon - Returnerer . . string innholdet
sexy størrelsen - . data /informasjon - må være et positivt heltall
butikken i begynnelsen av strengen - . data /informasjon - . et tegn
Implementering av String Class - headerfil
4
Lag en header fil som heter mystring.h (Fil - > Legg til - > header File ) . En header -fil er som en indeks for koden din .
5
Definer din klasse i header filen . Dette er koden : en
klasse myString {
6
Lag offentlige funksjoner for å håndtere alle funksjonene i design . Dette er koden : en
public:
myString (); //lager en tom streng
myString ( const char * ); //lager og initialiserer strengen til noen verdi ( i parentes )
~ myString (); //deallocates dynamisk minne ressurser
int getsize (); //viser oss størrelsen på strengen
char * outputmystring (); //utganger strengen
7
Lag private data medlemmer til å lagre data for strengen din . Dette er koden : en
privat : en
int _size ; //butikker strengen størrelse
røye * _mystr ; /* dette er en data -medlem som peker til den første tegnet i strengen . Hvis vi vet det første tegnet og størrelsen på strengen , kan vi få tilgang til alle sine karakterer * /
}
8
Skriv ditt fullstendige topptekstfil kode (du kan kopiere og lime fra her) : en
/* mystring.h * /
klasse myString {
public:
myString ();
myString ( const char * ) ;
~ myString ();
int getsize ();
char * outputmystring ();
private:
int _size ;
røye * _mystr ;
}
Implementering av String Class - kode File
9
Lag et matchende CPP -fil kalt mystring.cpp (Fil - > Legg til - > cpp fil - tom fil ) . Her vil du inkludere definisjonene for funksjonen på mystring.h header-fil . Akkurat som en bok , header-filer lagrer de viktigste tittles , og cpp filer lagre innholdet og definisjoner av hver titta .
10
Inkluder CString og iostream biblioteker. Dette er koden : en
/* mystring.cpp * /
# include
# include
11 < p> Definer bygging funksjoner ( tom konstruksjon og parameter konstruksjon) . Her er koden : en
myString :: myString () //Tom konstruktør
{
_size = 0;
_mystr = 0 ;
}
myString :: myString ( const char * str ) /* konstruerer og initialisert string til en verdi * /
{
if ( ! str )
{ _size = 0; _mystr = 0 ;} /* Hvis ingen verdi , er streng tom * /
annet
{ _size = strlen (str ) ;
_string = new char [ _size 1 ], /* dette er vår dynamisk minne allokering , basert på størrelsen på parameter * /
strcopy ( _string , str ) ;
< p > }
}
12
Definer destructor funksjon . Denne funksjonen brukes til å de- allokere det dynamiske minnet . Hver gang minnet der endres, må datamaskinen vite at det kan bruke den del av minnet for andre formål, Denne prosessen kalles de- allokering . Koden : en
myString :: ~ myString
{ slette [ ] _mystr ;} /* deallocates vår dynamisk minne * /
13
Definer funksjonen for å gå tilbake strengen størrelse og utgang strengen . Størrelsen er grei . Bare vise verdien av _size : en
int myString :: getsize ( ) {return ( _size ) ;}
For å skrive ut strengen , vil vi sende ut hvert tegn til vi kommer til slutten av string ( som tilfeldigvis er verdien av _size ) : en
ugyldig myString :: outputmystring ( )
{ for ( int teller = 0; teller == størrelse ; teller + + )
< p> {domstol << _mystr [teller ]; }
cout << endl ;}
14
Her er din komplette koden for mystring.cpp :
/* mystring.cpp * /
# include
# include
myString :: myString () //Tom konstruktør
{
_size = 0;
_mystr = 0;
}
myString :: myString ( const char * str ) /* konstruerer og initialisert string til en verdi * /
{
if ( str )
{ _size = 0; ! _mystr = 0 ;} /* hvis ingen verdi , strengen er tom * /
annet
{ _size = strlen (str ) ;
_string = new char [ _size 1 ], /* dette er vår dynamiske hukommelse tildeling , basert på størrelsen på parameter * /
strcopy ( _string , str ) ;
}
}
myString :: ~ myString
{ slette [ ] _mystr ;} /* deallocates vår dynamisk minne * /
int myString :: getsize ( ) {return ( _size ) ;}
ugyldig myString : : outputmystring ( )
{ for ( int teller = 0; teller == størrelse ; teller + + )
{domstol << _mystr [teller ]; }
cout << endl ;}