Rimuovi spazi dalla stringa in C++

Jinku Hu 12 ottobre 2023
  1. Usa l’idioma cancella-rimuovi per rimuovere gli spazi dalla stringa in C++
  2. Usa la funzione personalizzata per rimuovere gli spazi dalla stringa in C++
Rimuovi spazi dalla stringa in C++

Questo articolo illustrerà più metodi su come rimuovere gli spazi da una stringa in C++.

Usa l’idioma cancella-rimuovi per rimuovere gli spazi dalla stringa in C++

Uno dei metodi più utili per la manipolazione dell’intervallo in C++ è l’idioma cancella-rimuovi che consiste di due funzioni: std::erase (funzione incorporata per la maggior parte dei contenitori STL) e std::remove (la parte della libreria degli algoritmi STL). Si noti che entrambi sono concatenati per eseguire l’operazione di rimozione sull’oggetto specificato. La funzione std::remove richiede due iteratori per specificare l’intervallo e il terzo argomento per indicare il valore dell’elemento da rimuovere. In questo caso, specifichiamo direttamente uno spazio, ma qualsiasi carattere può essere specificato per rimuovere tutte le sue occorrenze nella stringa.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str = "  Arbitrary   str ing with lots of spaces to be removed   .";

  cout << str << endl;

  str.erase(std::remove(str.begin(), str.end(), ' '), str.end());

  cout << str << endl;

  return EXIT_SUCCESS;
}

Produzione:

Arbitrary   str ing with lots of spaces to be removed   .
Arbitrarystringwithlotsofspacestoberemoved.

D’altra parte, l’utente può anche passare il predicato unario come terzo argomento all’algoritmo std::remove. Il predicato dovrebbe restituire un valore bool per ogni elemento, e quando il risultato è true, i valori corrispondenti vengono rimossi dall’intervallo. Quindi, possiamo utilizzare una funzione isspace predefinita che verifica la presenza di più caratteri di spazio bianco come spazio - " ", nuova riga - \n, tabulazione orizzontale - \t e molti altri.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str = "  Arbitrary   str ing with lots of spaces to be removed   .";

  cout << str << endl;

  str.erase(std::remove_if(str.begin(), str.end(), isspace), str.end());

  cout << str << endl;

  return EXIT_SUCCESS;
}

Produzione:

Arbitrary   str ing with lots of spaces to be removed   .
Arbitrarystringwithlotsofspacestoberemoved.

Usa la funzione personalizzata per rimuovere gli spazi dalla stringa in C++

Si noti che tutte le soluzioni precedenti hanno modificato l’oggetto stringa originale, ma a volte potrebbe essere necessario creare una nuova stringa con tutti gli spazi rimossi. Possiamo implementare una funzione personalizzata usando lo stesso idioma cancella-rimuovi, che accetta il riferimento alla stringa e restituisce un valore analizzato da memorizzare in un oggetto stringa separato. Questo metodo potrebbe anche essere modificato per supportare un altro parametro di funzione che specificherà il carattere che deve essere rimosso.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

string removeSpaces(const string& s) {
  string tmp(s);
  tmp.erase(std::remove(tmp.begin(), tmp.end(), ' '), tmp.end());
  return tmp;
}

int main() {
  string str = "  Arbitrary   str ing with lots of spaces to be removed   .";

  cout << str << endl;

  string newstr = removeSpaces(str);

  cout << newstr << endl;

  return EXIT_SUCCESS;
}

Produzione:

Arbitrary   str ing with lots of spaces to be removed   .
Arbitrarystringwithlotsofspacestoberemoved.
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - C++ String