Die Zeichensetzung aus String C ++ entfernen

Die Zeichensetzung aus String C ++ entfernen
Wenn wir an C ++ - Projekten arbeiten, müssen wir Interpunktionszeichen entfernen, um unseren Code lesbar und zu löschen. Möglicherweise beabsichtigen Sie, Interpunktionszeichen oder Symbole aus einer von einem Benutzer in Ihr Programm eingegebenen Zeichenfolgennummer zu löschen, um sie in eine Ganzzahl umzuwandeln, da Interpunktion leistungsfähig ist. Sie haben die Macht, die Bedeutung des Satzes vollständig zu ändern. In Anbetracht der Tatsache, dass C ++ eine detaillierte Anleitung zum Entfernen von Interpunktionssymbolen aus einer Zeichenfolge erstellt hat.

Es gibt einige Methoden zum Entfernen von Interpunktionssymbolen aus einer Zeichenfolge in C++. In diesem Artikel werden wir durch die Entfernung von Interpunktionsmarken aus einer Zeichenfolge unter Verwendung verschiedener Methoden in c durchgehen++.

Beispiel 1: Programm der C-Art-Methode zur Entfernung der Interpunktion in C++

Diese Implementierung beseitigt alle Symbole mit Ausnahme von Alphabeten einer Zeichenfolge, indem die vom Benutzer eingegebene String-Methode im C-Stil verwendet wird.

Erstens haben wir die Hauptmethode des Programms. In der Hauptstufe haben wir ein Char -Array als „Strline“ und setzen die Grenze des Char -Arrays auf „50“ fest. Außerdem haben wir ein weiteres Char -Array definiert, "Charstring" von Limit "50". Dann eine "int" -Variable als "n" und initialisieren Sie sie mit der Null. Der COUT -Befehl druckt die Anweisung "Einen String eingeben" für einen Benutzer. Durch den CIN.GetLine -Ansatz, der Benutzer wird in die Zeichenfolge eingeben. Die vom Benutzer eingegebene Zeichenfolge wird im Rahmen der Schleifenbedingung überprüft, wodurch überprüft wird, ob sich das Zeichen „STRline“ nicht am Ende der Zeichenfolge befindet.

Dann wird die Anweisung die Bedingung ausführen, die in der eingetragenen Zeichenfolge das Kleinbuchstaben und das Großbuchstaben ausführt, und prüft, ob die Zeichenfolge nur Zeichen hat oder nicht. Wir haben das „Charstring“ -Array mit den Nullzeichen initialisiert, auf denen das Programm beendet wurde, als der Zeichenfolge seinen Endwert von Nullzeichen hat.

#enthalten
Verwenden von Namespace STD;
int main ()
Char Strline [50], Charstring [50];
int n = 0;
Cout<= 'a' &&StrLine[i]= 'A' &&StrLine[i]<='Z'))

Charstring [n ++] = strline [i];


CHARSTRING [n] = '\ 0';
Cout<< "Resultant String: " <Rückkehr 0;

Die vom Benutzer eingegebene Zeichenfolge verfügt über einige Interpunktionszeichen, die in der resultierenden Zeichenfolge von der C-Art-Methode entfernt werden.

Beispiel 2: Programm der Verwendung von STD :: REMET_IF -Methode zum Entfernen der Interpunktion in C++

Eine einfache Option zum Entfernen von Interpunktion aus einer Zeichenfolge besteht darin, den Standard -Algorithmus „std :: remy_if“ mit der Funktion String :: ERASE zu verwenden. Da der Algorithmus "std :: remy_if" keinen Zugriff auf den String -Container hat, kann er nur die Interpunktionsmarkierungen in der Zeichenfolge entfernen. Es gibt einen Iterator aus, der angibt, wo sich die Beendigung befinden soll. Dies kann mit der STD :: ERASE -Methode entfernt werden.

Die Hauptmethode dieses Programms verfügt über eine Standard -String -Klassenmethode, um eine Zeichenfolge als „MyString“ zu deklarieren und sie mit der Zeichenfolge zu initialisieren, die ein Zeichenzeichen enthält. Anschließend haben wir eine Variable vom Typ "automatisch" als "Entfernen". Wir haben die Methode std :: remy_if verwendet. In der Methode haben wir eine begin () -Funktion für den ersten Zeichen Iterator der Zeichenfolge und das Ende () für den letzten Zeichen Iterator für die Zeichenfolge „MyString“. Wir haben eine Array -char const von Referenzvariablen "S". Es schafft eine Kopie jedes Zeichens.

Die ISPunct () wird dann aufgerufen, um das Array mit Elementen zu überprüfen. Danach wird die Löschmethode verwendet, die die Zeichensetzung von der Zeichenfolge bis zum letzten Zeichen der Zeichenfolge entfernt.

#enthalten
#enthalten
#enthalten
#enthalten
int main ()

std :: string mystring = "er!@|| ll@o.++| ";
auto remove = std :: remove_if (MyString.begin (), mystring.Ende(), []
(Char const & s)

return std :: ispunct (s);
);
Mystring.löschen (entfernen, mystring.Ende());
std :: Cout<Rückkehr 0;

Die im Bild gezeigte Zeichenfolge hat kein Interpunktionssymbol; Nur die Zeichenfolge mit den Zeichen wird zurückgegeben.

Beispiel 3: Programm der Verwendung einer Reverse -Schleife zum Entfernen der Interpunktion in C++

Alternativ können wir eine konventionelle für die Schleife verwenden, um Unterbrechungen in der angegebenen Zeichenfolge zu lokalisieren und sie mit der String :: ERASE -Methode zu löschen. Die Schleife sollte in umgekehrter Reihenfolge erfolgen, um eine nicht deterministische Leistung zu vermeiden und gleichzeitig Komponenten während der Iteration zu entfernen.

Die Zeichenfolge ist mit dem Namen "String_str" wie in einer Standardklasse von String definiert, und die Zeichenfolge enthält die Zeichenfolge mit einigen Alphabet -Zeichen und einigen Interpunktionsymbole. Nach der String -Deklaration haben wir eine für die Schleife, die über jeden Stringzeichen in umgekehrter Reihenfolge iteriert wird. Anschließend haben wir eine Isspunktfunktion, die Interpunktionszeichen in der angegebenen Zeichenfolge in der IF -Bedingung überprüft. Wenn ein Zeichenzeichen gefunden wird, wird er in der Löschfunktion gelöscht.

#enthalten
#enthalten
#enthalten
int main ()

std :: string string_str = "c '| plus [pluspro@gr @@^a & mm!-";
für (int i = string_str.size () - 1; i> = 0; ich--)
if (iSpunct (string_str [i])
String_str.löschen (i, 1);


std :: Cout<< "String :" <Rückkehr 0;

Die resultierende Zeichenfolge hat kein Interpunktionszeichen, wie im folgenden Bild gezeigt.

Beispiel 4: Programm Verwenden einer benutzerdefinierten Funktion zum Entfernen der Zeichensetzung in c++

Alternativ kann das vorherige Verfahren in eine separate Funktion verschoben werden, die eine lokale Kopie der Zeichenfolge generiert und darauf arbeitet, wobei der formatierte Wert an den ursprünglichen Code zurückgibt. Die benutzerdefinierte Funktion wird verwendet, um die Funktionalität zu verbessern, um unterschiedliche Zeichensätze zu ermöglichen oder sogar die benutzerdefinierte Kriterienfunktion für den dritten Parameter des REME_IF -Algorithmus zu übergeben.

Wir haben die Funktionsdefinition als "EntfernenPUNKTUION" im folgenden Programm und haben die String -Referenz "Str" als Parameter übergeben. In der Funktion haben wir "Temperatur" als eine Funktion, an die wir „str übergeben“. Anschließend haben wir eine Löschfunktion, die die STD :: REMED_IF -Funktion darin aufruft.

Danach haben wir die Hauptmethode, bei der wir einen String „Inhalt“ definiert und initialisiert haben. Außerdem rief die Funktion die oben angegebene Funktion "Entfernenpunktuierung" hier auf, an die der Zeichenfolge „Inhalt“ übergeben wird. Die analysierte Zeichenfolge wird nach dem Entfernen der Interpunktionsymbole gedruckt.

#enthalten
#enthalten
#enthalten
#enthalten
Verwenden von STD :: Cout; mit std :: cin;
mit std :: endl; Verwenden von STD :: String;
String RemovePunctuation (const String & str)
String Temp (str);
Temperatur.löschen (std :: remy_if (tempo.begin (), tempor.end (), ispunct), tempor.Ende());
Temperatur zurückgeben;

int main ()
String content = "haben | ,! a @@^() g ^^ o!OD D@++ ay |?";
Cout<< "string content:" << content <String format_content = removePoNctuation (Inhalt);
Cout<< "Parsed string :" <Rückkehr 0;

Die Zeichenfolge mit Interpunktionszeichen und die Zeichenfolge ohne Interpunktionszeichen wird hier auf dem Ausgangsbildschirm angezeigt.

Abschluss

Zusammenfassend haben wir in C ++ mehrere Möglichkeiten abgedeckt, um Interpunktionszeichen aus einer Zeichenfolge zu entfernen. Sie können die oben diskutierten vier Methoden zum Entfernen aller Zeichenzeichen von einer Zeichenfolge verwenden. Diese Methoden geben Ihnen eine Filter-Interpunktionszeichenfolge in C++. Durch das Lesen des Artikels können Sie feststellen, welcher dieser Ansätze bequemer ist.