Vergleichstabelle
Vergleichsgrundlage | Character Array | String |
---|---|---|
Basic | Zeichenarray ist eine Sammlung von Variablen des Zeichendatentyps. | String ist Klasse und Variablen von String sind das Objekt der Klasse "String". |
Syntax | char array_name [Größe]; | string string_name; |
Indizierung | Auf ein einzelnes Zeichen in einem Zeichenfeld kann über seinen Index im Feld zugegriffen werden. | In string kann auf das jeweilige Zeichen mit der Funktion "string_name.charAt (index)" zugegriffen werden. |
Datentyp | Ein Zeichenarray definiert keinen Datentyp. | Eine Zeichenfolge definiert einen Datentyp in C ++. |
Betreiber | Operatoren in C ++ können nicht auf Zeichenarrays angewendet werden. | Sie können einen Standard-C ++ - Operator auf die Zeichenfolge anwenden. |
Grenze | Array-Grenzen werden leicht überschritten. | Grenzen werden nicht überschritten. |
Zugriff | Schneller Zugriff | Langsamer Zugriff. |
Definition von Zeichenarray
Ein Zeichenarray ist eine Sammlung von Variablen des Datentyps "char". Es kann sich um ein eindimensionales Array oder ein zweidimensionales Array handeln. Es wird auch als "nullterminierter String" bezeichnet. Ein Zeichenfeld ist eine Folge von Zeichen, die in aufeinanderfolgenden Speicheradressen gespeichert sind. In einem Zeichenfeld kann auf ein bestimmtes Zeichen über seinen Index zugegriffen werden. Ein "Nullzeichen" beendet das Zeichenarray. "
Nehmen wir ein Beispiel für ein Zeichenfeld: -
char name [] = {'A', 'j', 'a', 'y', '\ 0'}; oder char name [] = "Ajay";
Hier ist „char“ ein Zeichendatentyp, „name“ ist ein Variablenname des Zeichenarrays. Ich hatte zwei Möglichkeiten gezeigt, das Zeichenarray zu initialisieren. Bei der ersten Methode wird die Null explizit erwähnt, und bei der zweiten Methode fügt der Compiler automatisch die Null ein.
Das Ende der Zeichenfolge ist immer ein Nullzeichen. es ist das abschließende Zeichen des Zeichenfeldes. Ein Zeichenarray ist kein eingebauter Datentyp. Wir erstellen ein Zeichenarray, indem wir es deklarieren. Sie können keine Standardoperatoren auf ein Zeichenarray anwenden. Für die Bearbeitung von Zeichenfeldern gibt es einige eingebaute Funktionen wie (strlen (), strlwr (), strupr (), strcat ()). Da die Standardoperatoren nicht auf ein Zeichenarray angewendet werden können, können sie an keinem Ausdruck teilnehmen.
Der Zeichenzeiger auf ein Zeichenfeld kann ebenfalls erstellt werden.
Verstehen wir es mit einem Beispiel.
char s1 [] = "Hallo"; char s2 [] = "Sir"; s1 = s1 + s2; // Fehleroperatoren können nicht angewendet werden s2 = s1; // error Zeichenzeiger char * s = "Morning"; char * p; p = s; // führt aus
Im obigen Beispiel hatten wir zwei Zeichenarrays s1, s2 und zwei Zeichenzeiger s und p deklariert. Das Zeichenarray s1 und s2 wird initialisiert. Wir sehen, dass weder der Additionsoperator (+) noch der Zuweisungsoperator mit dem Zeichenarray arbeiten. Ein Zeichenzeiger kann jedoch einem anderen Zeichenzeiger zugeordnet werden.
Denken Sie daran, dass das Zeichenfeld nach der Initialisierung nicht erneut mit einem anderen Zeichensatz initialisiert werden kann. Der Zugriff auf ein Zeichenarray oder eine mit Null abgeschlossene Zeichenfolge ist im Vergleich zu Zeichenfolge in C ++ schnell.
Definition von String
Ein String ist kein eingebauter Datentyp von C ++. Es ist ein Klassenobjekt vom Typ "String". Wie in C ++ ist das Erstellen einer Klasse wie das Erstellen eines Typs. Die Klasse "string" ist Teil der C ++ - Bibliothek. Es enthält die Menge der Zeichen oder Zeichenarrays als Ganzes. Für die Entwicklung einer Standard-String-Klasse gibt es drei Gründe.
- Erstens ist "Konsistenz", die Zeichen-Arrays sind keine eigenen Datentypen.
- Zweitens ist "Bequemlichkeit", Sie können keine Standardoperatoren für ein Zeichenarray verwenden.
- Drittens ist "Sicherheit", Array-Grenzen werden leicht überschritten.
Lassen Sie uns Strings mit einem Beispiel verstehen.
String s1; s1 = "Hallo"; String s2 ("Guten Morgen"); Zeichenfolge s3 = "Hennery"; Zeichenfolge s4;
In der obigen Deklaration werden vier Stringvariablen oder -objekte (s1, s2, s3, s4) deklariert. In der obigen Deklaration hatte ich drei Möglichkeiten gezeigt, die Zeichenfolge zu initialisieren. Die Zeichenfolge s1 wird deklariert und anschließend separat initialisiert. Die Zeichenfolge s2 wird vom Konstruktor der Klasse "String" initialisiert. Der String s3 wird zum Zeitpunkt seiner Deklaration wie der normale Datentyp initialisiert. Wir können den Standardoperator auf die Stringvariablen anwenden.
s4 = s1; // Zuordnen eines String-Objekts zu einem anderen s4 = s1 + s2; // Hinzufügen von zwei Zeichenfolgen und Speichern des Ergebnisses in der dritten Zeichenfolge if (s3> s2) // Vergleichen von zwei Zeichenfolgen-Zeichenketten s5 (s1); Erstellen eines neuen String-Objekts unter Verwendung eines vorhandenen String-Objekts
Im obigen Code werden verschiedene Operatoren auf eine Zeichenkette angewendet und verschiedene Operationen ausgeführt. Die erste Anweisung kopiert ein String-Objekt in ein anderes String-Objekt. In der zweiten Anweisung werden zwei Zeichenfolgen verkettet und in einer dritten Zeichenfolge gespeichert. In der dritten Anweisung werden zwei Zeichenfolgen verglichen. In der vierten Anweisung wird ein neues String-Objekt mit dem bereits vorhandenen String-Objekt erstellt.
Der Zugriff auf die Zeichenfolge ist im Vergleich zu einem Zeichenarray oder einer mit Null abgeschlossenen Zeichenfolge langsam.
Hauptunterschiede zwischen Zeichenarray und Zeichenfolge
- Ein Zeichenarray ist eine Sammlung von Variablen, die den Zeichentyp haben. String ist eine Klasse, die zur Deklaration von Strings instanziiert wird.
- Mit dem Indexwert können Sie auf ein Zeichen aus einem Zeichenarray zugreifen. Wenn Sie jedoch auf ein bestimmtes Zeichen in einer Zeichenfolge zugreifen möchten, können Sie über die Funktion Zeichenfolge_Name.charAt (Index) darauf zugreifen.
- Da ein Array kein Datentyp ist, ist ein Zeichen in ähnlicher Weise auch kein Datentyp. Auf der anderen Seite fungiert String als Klasse als Referenztyp, daher kann gesagt werden, dass String ein Datentyp ist.
- Sie können keinen Operator auf ein Zeichenfeld anwenden, während Sie auf String Operatoren anwenden können.
- Ein Array-Zeichen zu sein, hat eine feste Länge und seine Grenzen können leicht überschritten werden. Wobei String keine Grenzen hat.
- Array-Elemente werden in einem zusammenhängenden Speicherbereich gespeichert, so dass schneller auf die String-Variable zugegriffen werden kann.
Fazit:
Die Unfähigkeit, mit Zeichenarrays zu arbeiten, erhöhte die Entwicklung der Standard-String-Klasse.