The C + + string biblioteket har flera användbara funktioner för att manipulera strängar , men ingen allmän sök och ersätt . Även om det finns en hel del information om optimerade algoritmer för att genomföra godtycklig text ersättare , många algoritmer involverar komplexa datastrukturer och svåra att följa tekniker såsom pekararitmetik . För de flesta program är sök och ersätt inte en prestation flaskhals , så det är mer förnuftigt att använda ett enkelt och lättförståeligt algoritm . Detta är möjligt genom att utnyttja en del av de befintliga strängen funktioner för att hantera lågaktivt manipulation . Instruktioner
1
Skriv konturerna av din sträng ersättare funktion :
sträng replaceSubstring ( sträng källa , sträng match , sträng ersätta ) { string ut = " " ; tillbaka ut ; }
2
Lägg en ögla som hittar alla delsträngsmatchningar i strängen . De variabla lastpos kommer att vara till hjälp när du börjar lägga till kod för att bygga den nya strängen :
size_t pos = 0; //Börja söka på de första charactersize_t lastpos = 0 , medan ( ( pos = source.find ( ! matchen , pos ) ) = string :: icke vinstdrivande organisationer ) //loop tills inga matchningar hittas { pos = pos + match.lengh ( ) , //Starta sökningen för nästa match i slutet av denna matchlastpos = pos ; } Addera 3
Bygg produktionen strängen som träffar hittas :
size_t pos = 0; //Börja söka på de första charactersize_t lastpos = 0 , medan ( ( pos = source.find ( match , pos ) ) = string :: icke vinstdrivande organisationer ) //loop tills inga matchningar hittas { utgång + = source.substr ( lastpos , pos - lastpos ) ; ! //Lägg till alla tecken som hoppades overoutput + = ersätta, pos = pos + match.lengh ( ) , //Starta sökningen för nästa match i slutet av detta matchlastpos = pos ;} utgång + = source.substr ( lastpos ) , //Lägg resten av källsträngen Addera