The C + + string bibliotek har flere nyttige funktioner til at manipulere strenge, men ingen generel søg og erstat . Selv om der er en masse oplysninger om optimerede algoritmer til at gennemføre vilkårlig tekst udskiftning , mange algoritmer involvere komplekse datastrukturer og svære at følge teknikker såsom pointer aritmetik. Til de fleste programmer er søg og erstat ikke en performance flaskehals , så giver det mere mening at bruge en enkel, let forståelig algoritme. Dette er muligt ved at udnytte nogle af de eksisterende strengen funktioner til at håndtere lavniveau- manipulation . Instruktioner
1
Skriv omridset af din streng udskiftning funktion : Hej
string replaceSubstring (string source, string match, string erstatte) { string out = " " tilbage ud ; }
2
Tilføj en løkke, der finder alle substring kampe i strengen. De variable lastpos vil være nyttigt, når du begynder at tilføje koden til at bygge den nye streng:
size_t pos = 0 //Start søgning på de første charactersize_t lastpos = 0 , mens ( ( pos = source.find ( ! match , pos )) = string :: NPOs) //loop indtil der ikke findes matches { pos = pos + match.lengh () //Start søgningen til næste kamp i slutningen af denne matchlastpos = pos ;}
3
Byg output streng som matcher findes : Hej
size_t pos = 0 //Start søgning på de første charactersize_t lastpos = 0 , mens ( ( pos = source.find ( match , pos )) = string :: NPOs) //loop indtil der ikke findes matches { output + = source.substr ( lastpos , pos - lastpos ) ! //Tilføj alle tegn , der blev sprunget over overoutput + = erstatte , pos = pos + match.lengh () //Start søgningen til næste kamp i slutningen af denne matchlastpos = pos ;} output + = source.substr ( lastpos ) //Tilføj resten af kilden strengen KAYAK