L'approccio più semplice per la modifica "in-place" è quello di usare un puntatore in lettura e uno in scrittura; per controllare se il carattere va bene puoi usare la funzione strchr per cercare nella stringa contenente i soli caratteri validi. Esempio:
D'altra parte, se tutto quello che vuoi è semplicemente tenere i caratteri alfabetici e maiuscoli, ti basta usare la funzione std::isupper per il controllo del carattere, che è molto più veloce che iterare su tutto un array ad ogni carattere (la funzione diventa O(N) invece di O(N*M), con N lunghezza della stringa e M numero di caratteri validi).codice:#include <cstring> // ... void PurgeString(char * Str, const char * Valid) { const char * readPtr=Str; char * writePtr=Str; while(*readPtr) { if(std::strchr(Valid,*readPtr)!=NULL) writePtr++; *writePtr=*readPtr; readPtr++; } *writePtr=0; } // ... char stringa="Ciao mondo!"; char valid="AEIOUaeiou"; PurgeString(stringa, valid); // stringa ora vale "iaooo"

Rispondi quotando