Hvordan erstatte tilfeldig tekst i String i C ++
C ++ strengen 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 er ikke en ytelse flaskehals, så det er mer fornuftig å bruke en enkel, lett forståelig algoritme. Dette er mulig ved å utnytte noen av de eksisterende strengfunksjoner for å håndtere lavnivå manipulasjon.
Bruksanvisning
1 Skriv omrisset av streng erstatning funksjon:
string replaceSubstring (string kilde, streng kamp, string erstatte)
{
string ut = "";
vende tilbake;
}
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 streng:
size_t pos = 0; // Start søking på første tegn
size_t lastpos = 0;
while ((pos = source.find (kamp, pos))! = string :: npos) // løkke til ingen treff blir funnet
{
pos = pos + match.lengh (); // Start jakten på den neste kampen på slutten av denne kampen
lastpos = pos;
}
3 Bygg output strengen som kampene er funnet:
size_t pos = 0; // Start søking på første tegn
size_t lastpos = 0;
while ((pos = source.find (kamp, pos))! = string :: npos) // løkke til ingen treff blir funnet
{
utgang + = source.substr (lastpos, POS - lastpos); // Legg alle tegn som ble hoppet over i løpet av
utgang + = erstatte;
pos = pos + match.lengh (); // Start jakten på den neste kampen på slutten av denne kampen
lastpos = pos;
}
utgang + = source.substr (lastpos); // Legg til resten av kildestrengen