Vergleich von String und Character in C++

Muhammad Husnain 11 Dezember 2023
  1. Erstellen ein Zeichenarray in C++
  2. Verwendung von die Bibliothek String in C++
  3. Vergleich von Strings mit Char in C++
Vergleich von String und Character in C++

In diesem trivialen Leitfaden geht es um die Verwendung von Strings in C++ und wie diese Strings mit anderen Literalen verglichen werden. Bevor wir fortfahren, werden wir Strings in C++ kurz vorstellen.

In C++ können Strings auf zwei verschiedene Arten kategorisiert werden:

  1. Erstellen Sie ein Character-Array, um einen String zu bilden
  2. Verwenden Sie die Standardbibliothek String in C++

Erstellen ein Zeichenarray in C++

Wie in der C-Sprache bietet uns C++ auch Zeichen-Arrays, d.h. char-Array, die als String-Literal verwendet werden können. Es ist ein eindimensionales Array von Zeichen, das durch eine null abgeschlossen wird.

Der String wird also erstellt, indem ein char-Array gebildet und mit einem null-Zeichen abgeschlossen wird.

Bitte beachten Sie, dass zum Drucken eines Zeichenarrays mit einer Aggregatmethode (z. B. cout<< charArray) ein null-Zeichen das Zeichenarray beenden muss. C++ verwendet \0 als NULL-Zeichen und hilft Aggregatmethoden, das Ende der Zeichenkette zu erkennen (es ist unmöglich, das Ende eines Arrays ohne ein Endmarkierungssymbol zu erkennen).

Daher deklariert das folgende Beispiel ein Zeichen-Array der Größe 11, obwohl “C-Sprache” nur zehn Zeichen enthält.

char word[11] = {'C', '-', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e', '\0'};

Die obige Anweisung kann auch wie folgt geschrieben werden, vorausgesetzt, Sie befolgen die Initialisierungsregeln.

char word[] = "C-language";

Wenn Sie vergessen, das null-Zeichen ans Ende zu setzen, setzt der Compiler implizit das null-Zeichen ans Ende selbst. Werfen wir einen Blick auf das Programm unten.

#include <iostream>
using namespace std;

int main() {
  char word[11] = {'C', '-', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e', '\0'};
  cout << "First message: ";
  cout << word << endl;
  return 0;
}

Zeile Nr. 06 im obigen Code-Snippet trägt First Message: zur Ausgabe bei, während Zeile Nr. 07 alle Zeichen in der Variable word anzeigt, bis sie auf \0 stoßen. Daher generiert das obige Code-Snippet die folgende Ausgabe.

First Message: C-language

Verwendung von die Bibliothek String in C++

C++ hat eine eingebaute string.h-Header-Datei als Teil seiner Standardbibliothek. Es bietet ein Bündel von Funktionalitäten (z. B. strcpy, strlen usw.), um mit Strings im C-Stil (d. h. nullterminierten Strings) zu arbeiten.

Bitte beachten Sie, dass sich alle modernen string-Bibliotheken, die ohne .h enthalten sind, von string.h unterscheiden. Die string-Klassenbibliothek ist eine C++-Bibliothek zur Manipulation moderner C++-Strings, während string.h eine C-Header-Datei zur Manipulation von Strings im C-Stil (d. h. nullterminierte Strings) ist.

Schauen wir uns den folgenden Code an, um die Bibliothek string.h zu verstehen.

#include <string.h>

#include <iostream>
using namespace std;

int main() {
  char country[] = "Pakistan";
  char countryTemp[50] = "abc";

  cout << "countryTemp length before initializing is:";
  cout << strlen(countryTemp) << endl;

  // strcpy()
  cout << "Let's copy country to countryTemp" << endl;
  strcpy(countryTemp, country);
  cout << "countryTemp=" << countryTemp << endl;

  cout << "countryTemp length after copying country is:";
  cout << strlen(countryTemp) << endl;

  return 0;
}

Das obige Programm deklariert zunächst zwei Zeichen-Arrays (C-Strings) und initialisiert das erste mit Pakistan. Zeile 10 gibt die Länge von countryTemp aus, die 3 ist.

Obwohl die Gesamtgröße von countryTemp 50 Bytes beträgt, kann strcpy die Größe nur basierend auf dem NULL-Zeichen (im vierten Byte des Arrays platziert) berechnen. Daher gibt strcpy 3 zurück.

Zeile 14 verwendet die Funktion strcpy, um den Inhalt des Arrays country nach countryTemp zu kopieren. Daher wird die neue Länge von countryTemp zu 8.

Ausgabe:

countryTemp length before initializing is:3
Let's copy country to countryTemp
countryTemp=Pakistan
countryTemp length after copying country is:8

Hinweis: Die Header-Datei string.h bietet zahlreiche Funktionen für NULL-terminierte Strings (auch bekannt als C-Style-Strings). Weitere verfügbare Bibliotheksfunktionen finden Sie hier.

Vergleich von Strings mit Char in C++

Es ist ein allgemeines Problem für Leute, Strings mit Zeichenkonstanten zu vergleichen. Dies ist praktisch nicht möglich.

Betrachten Sie den folgenden Code.

#include <iostream>
using namespace std;

int main() {
  cout << "Do you want to proceed (y or n)?\n";
  char inp;
  cin >> inp;
  if (inp == "y")  // error here
    cout << "Hello again" << endl;
  else
    cout << "Good Bye" << endl;
  return 0;
}

Hier in dieser Funktion haben wir eine Eingabe vom Benutzer vorgenommen, die eine char-Variable ist, und in der if-Bedingung vergleichen wir sie mit einem String-Literal, das in doppelte Anführungszeichen eingeschlossen ist. Dieser Code generiert den Fehler error: ISO C++ forbids comparison between pointer and integer.

Es wird empfohlen, die Eingabe in der Variablen string anstelle der Variablen char zu übernehmen, um diesen Fehler zu vermeiden.

#include <iostream>
#include <string>
using namespace std;

int main() {
  cout << "Do you want to proceed (y or n)?\n";
  string ans;
  cin >> ans;
  if (ans == "y")  // error here
    cout << "Hello again" << endl;
  else
    cout << "Good Bye" << endl;
  return 0;
}

Ausgabe:

Do you want to proceed (y or n)?
n
Good Bye
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Verwandter Artikel - C++ String