De C + + koord bibliotheek heeft een aantal handige functies voor het manipuleren van strings , maar geen algemeen zoeken en vervangen . Hoewel er veel informatie over geoptimaliseerde algoritmen voor de uitvoering van willekeurige tekst vervanging , vele algoritmen om complexe datastructuren en moeilijk te volgen technieken zoals pointers . Voor de meeste programma's , zoeken en vervangen is geen prestatie-bottleneck , dus is het zinvoller om een eenvoudige , gemakkelijk te begrijpen algoritme gebruiken . Dit is mogelijk door gebruik te maken van enkele van de bestaande functies string de lage manipulatie verwerken . Instructies 1 Schrijf de omtrek van je string vervanging van de functie : touwtje replaceSubstring (string bron , snaar wedstrijd , snaar vervangen ) { koord uit = " " ; terug uit ; } kopen van 2 Voeg een lus die alle substring wedstrijden in de string vindt . De variabele lastpos zal nuttig zijn wanneer u begint met het toevoegen van de code om de nieuwe string te bouwen : size_t pos = 0 ; //Begin met zoeken op de eerste charactersize_t lastpos = 0; while ( ( pos = source.find ( ! wedstrijd , pos ) ) = tekenreeks :: NPO's ) //loop totdat er geen overeenkomsten worden gevonden { pos = pos + match.lengh ( ) ; //Start de zoektocht naar de volgende wedstrijd op het einde van dit matchlastpos = pos ; } 3 Bouw de uitgang string als overeenkomsten worden gevonden : size_t pos = 0 ; //Begin met zoeken op de eerste charactersize_t lastpos = 0; while ( ( pos = source.find ( wedstrijd , pos ) ) = tekenreeks :: NPO's ) //loop totdat er geen overeenkomsten worden gevonden { uitgang + = source.substr ( lastpos , pos - lastpos ) ; ! //Zet alle tekens die werden overgeslagen overoutput + = vervangen; pos = pos + match.lengh ( ) ; //Start de zoektocht naar de volgende wedstrijd op het einde van dit matchlastpos = pos ; } uitgang + = source.substr ( lastpos ) ; //Voeg de rest van de bron-string
|