The C + + streng biblioteket har flere nyttige funksjoner for å manipulere strenger , men ingen generell søk og erstatt . Selv om det er mye informasjon på optimaliserte algoritmer for å implementere vilkårlig tekst erstatning , mange algoritmer involverer komplekse datastrukturer og vanskelige å følge teknikker som peker aritmetikk. For de fleste programmer , søk og erstatt ikke en forestilling flaskehals , så det er mer fornuftig å bruke en enkel , lett forståelig algoritme . Dette muliggjøres ved å ta fordel av noen av de eksisterende strengfunksjonene å håndtere lavnivå- manipulasjon. Instruksjoner
en
Skriv omrisset av din streng erstatning funksjon : en
streng replaceSubstring ( string kilde , streng kamp , streng erstatte ) { string ut = " "; tilbake ut ; }
2
Legg en løkke som finner alle delstreng kamper i strengen . De variable lastpos vil være nyttig når du begynner å legge inn koden for å bygge den nye strengen : en
size_t pos = 0; //Begynne å søke på første charactersize_t lastpos = 0 , mens ( ( pos = source.find ( ! match, pos) ) = string :: npos ) //løkke til ikke finner samsvar { pos = pos + match.lengh (); //Start søket etter den neste kampen på slutten av denne matchlastpos = pos ; }
3
Bygg Utdatastringen som kampene blir funnet:
size_t pos = 0; //Begynne å søke på første charactersize_t lastpos = 0 , mens ( ( pos = source.find ( kamp , pos) ) = string :: npos ) //løkke til ikke finner samsvar { utgang + = source.substr ( lastpos , pos - lastpos ); ! //Legg alle tegnene som ble hoppet overoutput + = erstatte ; pos = pos + match.lengh (); //Start søket etter den neste kampen på slutten av denne matchlastpos = pos ;} utgang + = source.substr ( lastpos ), //Legg resten av kilden string