DString - En kort beskrivning
DString är en klass skriven i C++ som underlättar stränghantering. Allt minne allokeras dynamiskt utan att användaren
behöver bekymra sig om det. Massor av metoder och operatorer har implementerats och förhoppningsvis så hittar du inget som du
saknar. De två filerna är en header-fil och en källkods-fil. För mer information se någon av dessa filer. För en utförlig dokumentation
se header-filen eller den skrivna dokumentationen.
DString - Lite detaljer
Om du vill veta lite mer specifika detaljer kring DString har du hittat rätt avsnitt.
Till att börja med bygger implementationen på template konstruktionen i C++, vilket
gör att den interna representationen av enskilda tecken är godtycklig. Normalt använder man
väl char, men man skulle t.ex. kunna använda wchar_t för att representera
ett enskilt tecken.
För att optimera prestandan på alla metoder och operatorer har en del åtgärder vidtagits.
- Längden på den aktuella strängen lagras som ett heltal, vilket också gör det möjligt för strängen
att innehålla NULL-tecken.
- Vid operationer som inte ändrar så mycket på den aktuella strängens längd görs försök att slippa
kopiera all data till en ny buffert. Detta gör t.ex. att metoder som
Trim aldrig
kopierar någon data. Däremot kan det vara så att man inte utnyttjar hela bufferten efter anrop
till sådana metoder.
- Om man verkligen vill försäkra sig om att allt minne utnyttjas maximalt kan man tvinga fram
en optimal justering med metoden
Adjust.
- Samtliga metoder som inte ändrar något i den interna representationen har deklarerats som
const.
För att nämna några av fördelarna med denna implementation följer nedan en liten lista.
- Automatisk hantering av minne, även om exceptions uppstår
- Överlagrade operatorer
- Möjlighet att jämföra strängar med/utan hänsyn till stora/små bokstäver
- Högpresterande implementationer (i den mån det är möjligt) av samtliga metoder
- Bra möjligheter för att söka efter delsträngar
- Indexering både framifrån, med index 0 och uppåt, samt bakifrån med index -1 för
sista tecknet, -2 för näst sista o.s.v.
Filer och dokumentation
Tillbaka
|