Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come sostituire arbitraria di testo in stringa in C + +

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

 

Programmazione © www.354353.com