Unterschied zwischen char und string Array?



  • Hallo liebe Gemeinde.

    Ich habe nocheinmal in dem Buch nachgelesen, auf dem hier im Forum so manch einer nicht gut zu sprechen ist.

    Dort heißt es wie folgt:

    "Ein String ist eine Folge von einzelner Zeichen."

    Bloß, wo ist der Unterschied zwischen einem char Array und einem string Array?? Das ist mir noch nicht so klar...

    Weil ich habe die vergangenen Tage die folgenden beiden Codes niedergeschrieben:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
      char Array[]="Hallo, mein Name ist Maximilian";
      cout << Array;
      cout << endl;
    
      return 0;
    }
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
      std::string Array;
    
      cout << "Geben Sie eine Zeichenfolge ein!" << endl;
      getline(cin, Array);
    
      cout << endl;
      cout << "Das haben Sie eingegeben:" << endl;
      cout << Array << endl;
      cout << endl;
    
      return 0;
    }
    

    Wo besteht also der Unterschied zwischen einem char Array und einem String Array??

    Danke für die Antworten im Voraus.

    Gruß

    Max



  • Du hast hier kein string-Array. Du hast eine Variable (die unsinnigerweise Array heißt) vom Typ std::string. std::string ist eine Klasse für Zeichenketten. Eine andere (oft schlechtere und gefährlichere) Möglichkeit, Zeichenketten zu verwenden, sind rohe char-Arrays, wie in deinem ersten Beispiel. Aber das hat man dir doch alles schon mal im anderen Thread zu erklären versucht.

    Lies doch bitte erst mal nach, was ein Array ist. Ich bin sicher, das wird sogar in "C++ in 21 Tagen" halbwegs brauchbar erklärt.



  • Ich zitiere:

    "Ein Array ist eine Zusammenfassung von Speicherstellen für Daten desselben Datentyps. Die einzelnen Speicherstellen bezeichnet man als Elemente des Array."



  • Jo, also im Klartext: ein Array ist eine Reihe von Werten (eines bestimmten Typs). Im ersten Fall hast du mehrere Elemente des Typs char (Zeichen) in einem Array. Auf die kannst du auch zugreifen ( Array[1] ist 'a' ). Im zweiten Fall hast du aber lediglich eine einzelne Variable vom Typ std::string. Ein Array mit 10 Elementen vom Typ std::string wäre std::string myStringArray[10] . Damit hättest du 10 Zeichenketten, praktisch gesammelt in einem Datenfeld.

    char c;  //einzelnes Zeichen
    char carr[10];  //Array mit 10 Elementen vom Typ char
    std::string s;  //eine Variable vom Typ std::string
    std::string sarr[10]  //Array mit 10 Elementen vom Typ std::string
    std::vector<std::string> vs;  //Container vom Typ std::vector<std::string>, der Elemente vom Typ std::string hält (die Premium-Variante)
    


  • Also hat der Datentyp string dann doch mit Arrays zu tun?? Oder hat der Datentyp String nichts mit Array zu tun??



  • silent_max schrieb:

    Also hat der Datentyp string dann doch mit Arrays zu tun?? Oder hat der Datentyp String nichts mit Array zu tun??

    Ich will dir ja gerne helfen. Aber ich weiß nicht wie.

    std::string ist ein Typ für Variablen zum Speichern von Zeichenketten, genauso wie
    int ein Typ für Variablen zum Speichern von Ganzzahlen ist.

    Zeichenketten sind Folgen von Zeichen. Ja und?

    Wenn du "string Array" sagst, denken alle, dass du ein Feld von Strings anlegen willst ... also eine Folge von Strings ... Aber das ist offensichtlich nicht das, was du meinst! Du interessierst dich hier, soweit ich das beurteilen kann, nur für Folgen von Einzelzeichen, also strings oder char-arrays aber keine string-arrays.



  • Achso ... ich kann also entweder mit dem Datentyp string oder mit einem char-Array Zeichenketten einlesen und auf dem Bildschirm ausgeben.

    Mit

    std::string Zeichen[10]
    

    kann ich zehn Mal Zeichen eingeben.

    Habe ich den Unterschied jetzt verstanden???



  • Du hast ein Array, das 10 Elemente des Typs std::string enthält, und jedes Element vom Typ std::string kann eine beliebige Anzahl an Zeichen halten. Was du damit machst, ist letztlich egal.



  • silent_max schrieb:

    Mit

    std::string Zeichen[10]
    

    kann ich zehn Mal Zeichen eingeben.

    Habe ich den Unterschied jetzt verstanden???

    Nein, ums nochmal klarzustellen. Damit kannst du zehn Mal Zeichenketten eingeben.



  • Ja ok, dann habe ich es, hoffe und glaube ich, verstanden...



  • silent_max schrieb:

    Ja ok, dann habe ich es, hoffe und glaube ich, verstanden...

    Testen wir das doch mal. Bitte erkläre mit deinen eigenen Worten (falls du Lust hast, natürlich 🙂 ):

    - Was ist ein char
    - Was ist ein Array
    - Was ist ein char-Array
    - Was ist std::string
    - Was ist ein std::string-Array


Anmelden zum Antworten