strings c with examples
Ein intensiver Blick auf die Grundlagen von Strings in C ++.
In dieser C ++ - Reihe haben wir bisher hauptsächlich numerische Arrays in C ++ behandelt. In diesem Tutorial werden wir die Manipulation mit Zeichenarrays diskutieren, die wir einfach 'Strings' nennen.
Das Zeichenarray ist meistens eine Zeichenfolge im C-Stil, die C ++ unterstützt. Zusätzlich zu Zeichenarrays im C-Stil unterstützt C ++ auch eine Zeichenfolgenklasse „std :: string“. In diesem Tutorial werden wir sowohl die Arten von Zeichenfolgen als auch den Unterschied zwischen ihnen und die Programmierung der einzelnen Typen in C ++ erläutern.
=> Sehen Sie sich die vollständige Liste der C ++ - Tutorials in dieser Reihe an.
Was du lernen wirst:
Zeichenarrays (Zeichenfolgen im C-Stil)
Die Zeichenfolge im C-Stil ist ein Zeichenarray, das mit einem Nullzeichen ' 0' abgeschlossen wird. Daher können wir ein Array vom Typ char und die Abmessungen oder die Größe der Arrays definieren und es dann mit einer Zeichenfolge oder einem Array von Zeichen initialisieren.
Beachten Sie, dass es der Compiler ist, der eine Zeichenfolge mit einem Nullzeichen beendet. Wenn wir also das Zeichenarray mit einer Zeichenfolge (im doppelten Anführungszeichen '') initialisieren, müssen wir zusätzlichen Platz für das Nullzeichen lassen, während wir die Größe eines Arrays deklarieren .
Nehmen wir einige Beispiele für das Deklarieren und Initialisieren von Zeichenarrays.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Alle oben genannten Definitionen sind gültige Zeichenfolgendefinitionen im C-Stil in C ++. Beachten Sie, dass wir entweder die tatsächliche Größe deklarieren oder die Größe leer lassen können, damit der Compiler die Größe abhängig von der von uns initialisierten Zeichenfolge anpassen kann.
Nehmen wir eine Beispiel zum Lesen und Schreiben von Zeichenarrays in C ++
Im Folgenden finden Sie ein einfaches Programm, das den String mit cin liest und mit cout ausgibt.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Ausgabe 1:
SoftwareTestingHelp.com
Sie haben Folgendes eingegeben: SoftwareTestingHelp.com
Ausgabe 2:
Dies ist eine Zeichenfolge im C-Stil
Sie haben eingegeben: Dies
Wenn wir beide Ausgaben vergleichen, sehen wir, dass bei der Eingabe der ersten Zeichenfolge 'SoftwareTestingHelp.com' diese so gedruckt wurde, wie sie ist.
In der zweiten Ausgabe war die Ausgabe jedoch nur 'This', obwohl wir die Zeichenfolge als 'Dies ist eine Zeichenfolge im C-Stil' eingegeben haben.
Der Unterschied in der Ausgabe besteht darin, dass der Operator '>>' von cin, der zum Lesen der Zeichenfolge verwendet wird, als 'scanf' -Funktion von C behandelt wird, die nur bis zum Auftreten des Leerzeichens liest. Daher eignet sich 'cin with >>' zum Lesen von Zeichenarrays ohne Leerzeichen.
relationales Open Source-Datenbankverwaltungssystem
Während der zweite Ausgaberaum angetroffen wurde, nahm die cin-Funktion ihn als Ende der Zeichenfolge und las nur das erste Wort.
Um eine ganze Zeichenzeile einschließlich der Leerzeichen zu lesen, verwendet C ++ die Funktion 'get'.
Ein Beispielprogramm mit der Funktion get ist unten dargestellt:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Ausgabe:
Dies ist softwareTestinghelp.com
du bist eingetreten: Dies ist softwareTestinghelp.com
Wie im Beispiel gezeigt Die get-Funktion von cin verwendet zwei Argumente. Das erste Argument ist die Zeichenarrayvariable, in der die Zeichenfolge gelesen werden soll, während das zweite Argument die maximale Größe des Arrays ist.
Zeichenfolgen im C-Stil unterstützen auch zahlreiche Zeichenfolgenfunktionen, mit denen Benutzer die Zeichenfolgen bearbeiten können. Diese Funktionen sind in der Kopfzeile „cstring“ definiert.
In der folgenden Tabelle sind verschiedene Zeichenfolgenfunktionen aufgeführt, mit denen Zeichenfolgen im C-Stil bearbeitet werden können.
Unterlassen Sie Funktion Argumente Beschreibung 1 strcpy s1, s2 Kopiert die Zeichenfolge s2 in die Zeichenfolge s1 zwei strcat s1, s2 Hängt die Zeichenfolge s2 an das Ende der Zeichenfolge s1 an oder verkettet sie 3 strlen s1 Gibt die Länge des Strings s1 zurück 4 strcmp s1, s2 Rückgabe 0: s1 und s2 sind gleich
<0:s1 > 0: s1> s2 5 strchr s1, ch Gibt einen Zeiger auf das erste Auftreten des Zeichens ch in der Zeichenfolge s1 und der Zeichenfolge von da an zurück 6 strstr s1, s2 Gibt das erste Vorkommen der Zeichenfolge s2 in der Zeichenfolge s1 zurück
Das folgende Programm zeigt die Verwendung einiger dieser Funktionen in C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Ausgabe:
Länge von firstStr: 31
Resultierende Zeichenfolge (secStr): softwareTesting
Vergleich von firstStr und secStr: -31
Verkettetes secStr: Software-Test für Sie
Das erste Auftreten von i in firststr at: s ist softwareTestingHelp.com
String-Klasse In C ++
Ein String in C ++, der von der Klasse 'std :: string' definiert wird, ist eine Darstellung des Zeichenstroms in ein Objekt. Mit anderen Worten, die String-Klasse ist eine Sammlung von String-Objekten. Diese Zeichenfolgenklasse ist Teil des Standard-Namespace und wird im Header 'string.h' definiert.
Lassen Sie uns einige der grundlegenden Unterschiede zwischen Zeichenfolgenklasse und Zeichenarray diskutieren.
- Während die oben diskutierten Zeichenarrays während der Kompilierungszeit statisch zugewiesen werden, sind Zeichenfolgen Objekte und können daher dynamisch zugewiesen werden.
- Da Zeichenarrays statischer Natur sind, können sie nach ihrer Definition nicht verkleinert oder erweitert werden. Wenn wir also ein Zeichenarray der Größe 100 haben und ich es mit dem Wort „Hallo“ initialisiert habe, wird der verbleibende Speicherplatz verschwendet.
Char mystr (100) = 'Hallo';
Hier werden die restlichen 95 Standorte verschwendet.
Im Gegensatz dazu sind String-Objekte dynamischer Natur und nehmen genau den Platz für den Wert ein.
- Zeichenarrays haben eine schnellere Leistung, während Zeichenfolgen langsamer sind.
- Auf Zeichen-Arrays werden nur wenige Funktionen ausgeführt, die sie manipulieren können. Die String-Klasse verfügt über zahlreiche Funktionen, einschließlich der Iteratorfunktionen.
Dies sind einige der grundlegenden Unterschiede zwischen dem Zeichenarray und der Zeichenfolgenobjektklasse.
Als nächstes sehen wir einige Beispiele für Zeichenfolgenklassen sowie einige grundlegende Operationen, die für Objekte der Zeichenfolgenklasse ausgeführt werden.
Ein Beispiel zum Deklarieren und Initialisieren der Zeichenfolgenklasse.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<Im obigen Beispiel haben wir ein Zeichenfolgenobjekt mit der Klasse 'Zeichenfolge' deklariert und initialisiert. Dies ist ein einfaches Beispiel. Lassen Sie uns nun ein Programm haben, mit dem Sie die Zeichenfolge vom Benutzer lesen und einige Zeichenfolgenfunktionen demonstrieren können, einschließlich der Ermittlung der Länge und des Vergleichs zweier Zeichenfolgen.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Ausgabe:
Geben Sie die Zeichenfolge ein
SoftwareTestingHelp
Die eingegebene Zeichenfolge lautet: SoftwareTestingHelp
Die Länge der Zeichenfolge beträgt: 19
Zwei Saiten sind gleich
Neue str1: SoftwareTestingHelp.com
str neue Länge: 0
In der obigen Abbildung haben wir zahlreiche Zeichenfolgenfunktionen verwendet, um die Zeichenfolgen zu bearbeiten. Nach dem Deklarieren der Zeichenfolge verwenden wir die Funktion 'getline' der Zeichenfolgenklasse, um die Zeichenfolge aus der Standardeingabe zu lesen.
Sobald wir die Zeichenfolge gelesen haben, ermitteln wir ihre Länge mithilfe der Funktion 'Länge'. Wenn wir zwei Zeichenfolgen vergleichen müssen, um zu bewerten, ob sie gleich sind oder nicht, können wir die Funktion 'compare' der Zeichenfolgenklasse verwenden. Wenn die Funktion 0 zurückgibt, sind die beiden Zeichenfolgen gleich, andernfalls gibt die Funktion einen Wert ungleich Null zurück.
Eine weitere Funktion besteht darin, eine weitere Zeichenfolge an das Ende der vorhandenen Zeichenfolge anzuhängen. Dies ist die Funktion 'Anhängen'. In diesem Beispiel hängen wir '.com' an die bereits vorhandene Zeichenfolge str1 mit dem Wert 'softwaretesting' an.
Die letzte Funktion im Beispiel ist die Löschfunktion, mit der der Inhalt des aufrufenden Zeichenfolgenobjekts gelöscht wird. In diesem Beispiel löschen wir den Inhalt des str-Objekts so, dass seine Länge 0 wird.
Fazit
In diesem Tutorial haben wir das Zeichenarray, das auch als Zeichenfolgen im C-Stil bezeichnet wird, zusammen mit den Grundlagen der Zeichenfolgenklasse behandelt. Die String-Klasse enthält mehr Dienstprogramme wie die Iterator-Klasse, da es sich um eine Container-Klasse handelt.
Wir werden mehr über die String-Klasse und ihre Funktionen in unseren kommenden STL-Tutorials erfahren !!
=> Besuchen Sie hier, um die C ++ - Schulungsserie für alle zu sehen.
Literatur-Empfehlungen
- Shell-Sortierung in C ++ mit Beispielen
- Datums- und Uhrzeitfunktionen in C ++ mit Beispielen
- Java String mit String Buffer und String Builder Tutorial
- Auswahl In C ++ mit Beispielen sortieren
- Python-String-Funktionen
- Python DateTime Tutorial mit Beispielen
- Befehl in Unix mit Beispielen ausschneiden
- Über 70 BEST C ++ - Tutorials zum kostenlosen Erlernen der C ++ - Programmierung