La libreria C + + stringa ha diverse funzioni utili per la manipolazione di stringhe , ma nessuna ricerca generale e sostituire . Anche se c'è un sacco di informazioni su algoritmi ottimizzati per l'attuazione di sostituzione del testo arbitrario , molti algoritmi coinvolgono strutture dati complesse e difficili da seguire tecniche come l'aritmetica dei puntatori . Per la maggior parte dei programmi , ricerca e la sostituzione non è un collo di bottiglia , quindi ha più senso utilizzare un algoritmo semplice , facilmente comprensibile. Questo è possibile sfruttando alcune funzioni stringa esistenti per gestire la manipolazione di basso livello . Istruzioni
1
Scrivi il contorno della vostra funzione di sostituzione di stringa :
ReplaceSubstring string ( stringa di origine , match stringa , stringa sostituire ) {string out = ""; tornare fuori ; }
2
Aggiungi un loop che trova tutte le corrispondenze a sottostringhe nella stringa . I lastpos variabile sarà utile quando si inizia ad aggiungere il codice per costruire la nuova stringa :
size_t pos = 0; //Inizia la ricerca ai primi lastpos charactersize_t = 0 ; while ( ( pos = source.find ( ! partita , pos) ) = string :: ONP ) //ciclo fino a quando non vengono trovate corrispondenze {pos = pos + match.lengh ( ) ; //Avvia la ricerca della prossima partita alla fine di questo matchlastpos = pos; }
3
costruire la stringa di output , come si trovano gli incontri:
size_t pos = 0; //Inizia la ricerca ai primi lastpos charactersize_t = 0 ; while ( ( pos = source.find ( partita , pos) ) = string :: ONP ) //ciclo fino a quando non vengono trovate corrispondenze {output + = source.substr ( lastpos , pos - lastpos ) ; ! //Aggiungi tutti i caratteri che sono stati ignorati overoutput + = sostituire; pos = pos + match.lengh ( ) ; //Avvia la ricerca della prossima partita alla fine di questo matchlastpos = pos; } uscita + = source.substr ( lastpos ) ; //Aggiungere il resto della stringa di origine