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