Rimuovere gli spazi dalla stringa C ++

Rimuovere gli spazi dalla stringa C ++
I nostri dati possono contenere ulteriori spazi di volta in volta, che possono causare problemi durante l'analisi dei dati. Quando si presenta la necessità, sapere come rimuovere gli spazi aggiuntivi come schede, feed di linea e ritorni di trasporto sono utili. Ecco diverse spiegazioni sul perché gli spazi dovrebbero essere rimossi dalle stringhe:
  • Spazi inutili all'inizio, alla fine e persino al centro
  • Cercando di capire quanti personaggi ci sono in una stringa
  • Tentare di organizzare una serie di stringhe
  • Quando vengono confrontate due stringhe
  • Aggiunta di un URL a un sito

Se il nostro codice C ++ incontra spazi durante l'esecuzione di una di queste operazioni precedenti, riceveremo risultati imprevisti, come conteggi di carattere errati, elenchi ordinati in modo errato, confronti di stringhe imprecisi e URL rotti. Per impostazione predefinita, questi sono considerati personaggi di spazi bianchi, io.e., "\ N", "\ t", "", "\ v", "\ r", "f".

A volte è importante rimuovere lo spazio dalle stringhe nella programmazione per evitare risultati inaspettati. Scopri come rimuovere gli spazi dalle stringhe e come far fronte a spazi aggiuntivi con questo articolo.

Esempio 1: usando il metodo :: Isspace per rimuovere gli spazi bianchi dalla stringa in C++

Per estrarre caratteri di spazi bianchi da std :: stringhe, l'approccio comune è utilizzare il metodo STD :: Rimuovi se. L'algoritmo STD :: Remove_if non elimina efficacemente i caratteri dalla stringa ma piuttosto sposta tutti i personaggi con i non Whitespaces sul davanti e produce un iteratore che si riferisce alla fine. Il metodo std :: rimozione_if richiede un predicato che decide quali caratteri cancella dalla stringa.

Il metodo ISSPACE () è quello che è specificato nell'intestazione CCType e cerca caratteri di spazi bianchi classificati dalla locale installata C.

Il seguente esempio inizia dalla funzione principale. La dichiarazione stringa della classe stringa standard è definita nel metodo principale. La variabile stringa è definita come "STR" ed è inizializzata con la stringa contenente i caratteri di spazi bianchi. Per rimuovere gli spazi bianchi dalla stringa, abbiamo usato la normale procedura di cancellazione.

Abbiamo usato il metodo std :: remow_if. Nel metodo std :: remow_if, abbiamo superato la funzione ":: issspace" in una ricerca di un carattere di spazio bianco in una determinata stringa. La stringa dopo aver rimosso le spazi bianchi verrà stampata nella schermata seguente:

#includere
#includere
#includere
#includere
int main ()

std :: string str = "c \ n \ nplusplus";
str.cancella (std :: rimozione_if (str.inizio (), str.end (), :: isspace), str.FINE());
std :: cout<< "String:"<< str<<"\n";
restituzione 0;

Come puoi vedere, non si trova alcun carattere di spazio bianco nella stringa visualizzata:

Esempio 2: Utilizzo del metodo STD :: ISSPACE per rimuovere gli spazi bianchi dalla stringa in C++

In questo esempio, utilizziamo il metodo Bind standard per rimuovere lo spazio bianco dalla stringa chiamando la funzione STD :: ISSPACE. Invece di dipendere dalla classificazione della posizione C dei caratteri di spazi bianchi, possiamo usare std :: issspace rappresentato nella locale di intesta.

Legatura di una funzione con i segnaposto consente di modificare la posizione e la quantità di valori che la funzione utilizzerà, alterando la funzione in base al risultato desiderato.

La stringa è definita come "str_n" nella principale e viene inizializzata con la parola stringa con caratteri di spazi bianchi tra di loro. Qui, abbiamo invocato il metodo di cancellazione per la stringa "str_n" in cui vengono utilizzate due funzioni std :: remow_if e std :: bind. Si noti che abbiamo usato Std :: ISSPACE nella funzione BIND per trovare spazi bianchi nella stringa; Quindi, il metodo Cancella rimuoverà lo spazio bianco dalla stringa e restituirà una nuova stringa di risultato.

#includere
#includere
#includere
#includere
#includere
int main ()

std :: string str_n = "white \ n \ nspaces";
str_n.cancella (std :: remow_if (str_n.inizio(),
str_n.FINE(),
std :: bind (std :: isspace,
std :: segnaposto :: _ 1,
Std :: Locale :: Classic ()
),
str_n.FINE());
std :: cout<< "String:"<restituzione 0;

Dopo aver compilato il programma precedente, la shell visualizza i caratteri non Whitespace.

Esempio 3: usando il metodo unario per rimuovere gli spazi bianchi dalla stringa in C++

Invece di usare :: issspace o std :: isspace, possiamo creare una condizione personalizzata che restituisce vera se il personaggio è un carattere di spazio bianco o falso. Abbiamo creato il nostro metodo unario per rimuovere i caratteri di spazi bianchi dalla stringa.

Abbiamo creato un metodo unario "myfunction" di tipo di dati bool. La funzione è passata con l'argomento della variabile char non firmata "mychar". All'interno della funzione, abbiamo una condizione di restituzione che restituisce il carattere di spazio bianco specificato se trovato nella stringa.

Quindi, abbiamo la funzione principale in cui la stringa viene generata come "mystring" e contiene i caratteri della stringa con caratteri spazi bianchi. Il metodo di cancellazione viene utilizzato in seguito nella dichiarazione di stringhe in cui remoy_if e funzione "myfunction" si chiama cancellando i caratteri di spazi bianchi.

#includere
#includere
#includere
bool myfunction (unsigned char mychar)
return (mychar == "|| mychar == '\ n' || mychar == '\ r' ||
Mychar == '\ t' || Mychar == '\ V' || Mychar == '\ f');

int main ()

std :: string mystring = "mc \ n \ ndonald";
Mystring.cancella (std :: remow_if (mystring.inizia (), mystring.end (), myfunction), mystring.FINE());
std :: cout<< "String:" <restituzione 0;

La stringa risultante ha tutti i caratteri non Whitespace mostrati nella seguente schermata di shell:

Esempio 5: utilizzando il metodo Regex per rimuovere gli spazi bianchi dalla stringa in C++

Il metodo regex sostituti () sostituisce un modello di espressione regolare con una stringa contenente caratteri di spazi bianchi. Discutiamolo con la dimostrazione di esempio.

Il programma C ++ include un file REGEX nella sezione Intestazione per accedere alla funzione Regex_Replace nel programma. È definito il main int, che ha una rappresentazione di stringa integrale con i caratteri di spazi bianchi in una variabile stringa "Stringis". Quindi, abbiamo chiamato la funzione regex in una rappresentazione regex bloccata e abbiamo superato la variabile stringa "Stringis" con l'operatore "+". La funzione regex_replace viene chiamata tra la stringa variabile "Stringis" per cancellare gli spazi bianchi o i caratteri di spazi bianchi dalla stringa data:

#includere
#includere
#includere
int main ()

std :: string stringis = "1 \ n \ n2 \ n \ n3 \ n \ n4 \ n \ n5";
std :: regex regx ("\\ stringis+");
Stringis = std :: regex_replace (stringis, regx, "");
std :: cout<restituzione 0;

Il regex sostituisce rimuove i caratteri di spazi bianchi dalla stringa intera, che viene stampata nella shell di comando di Ubuntu.

Conclusione

Pertanto, possiamo rimuovere i caratteri di spazi bianchi dalla stringa in C ++ attraverso vari metodi discussi in questo articolo. Abbiamo tutte le dimostrazioni di questi esempi con il risultato risultante del programma. Hai un numero sufficiente di metodi per sostituire o rimuovere spazi bianchi da stringhe C ++. Scegli eventuali metodi che ti attraggono pur essendo appropriato per la situazione.