Alternative zu Char



  • Bei mir kommt folgende Fehlermeldung:
    char-Konstanten dürfen ein oder zwei Zeichen lang sein.

    Programm:

    char Array1[5]={'Schüler1','Schüler2',....}
    

    Gibt es da Alternativen ?



  • std::string .

    Oder eben char*.. Aber nimm lieber string.
    So:

    std::string array[] = { "hallo", "du" };
    

    Außerdem speichert char nur ein Zeichen, mehrere Zeichen muss man in "" setzen. (natürlich nicht mit char)



  • char steht für character, beantwortet das deine Frage?



  • #include <string>
    ...
    std::string Array1[5]={"Schüler1","Schüler2",...};
    


  • char mychr;
    

    Bedeutet nur ein Zeichen kann dort gespeichert werden.

    char mystr[10]
    

    Bedeutet nur 9 Zeichen + Nullterminierung können dort gespeichert werden. (Auch string genannt)

    char *ptrchar;
    

    Ist ein Zeiger auf den Beginn eines Strings der mit dem Null Zeichen '\0' terminiert sein muss. (Nullterminierung)

    In C++ verwendet man aber den sogenannten std::string. Dieser ist in dem Include <string> zu finden. Er ist leicht zu verwenden und man kann dort beliebig viele Zeichen variabel eingeben/ändern etc. Für Infos zum std::string bitte hier nachlesen: http://www.cplusplus.com/reference/string/string/



  • //C-Style String
    char* pStringArray[] = {"Schüler1","Schüler2",...};
    
    //pStringArray ist ein pointer auf einen char-pointer string (array)
    //pStringArray[0] ist ein array element von dem char-pointer string (offset 0)
    //pStringArray[0] zeigt auf einen char string (array) "Schüler1"
    //pStringArray[0][0] ist ein array element von dem char string (offset 0)
    //pStringArray[0][0] ist ein char (typ) "S"
    


  • AP0LL0, ich würde const char* nehmen, da du so das undefinierte Schreiben in Stringliterale vermeidest.



  • Bambi schrieb:

    Gibt es da Alternativen ?

    Sicher. Beispielsweise

    #include <iostream>
    #include <ostream>
    
    const char* const Array1[] = {"Schueler1","Schueler2"};
    
    int main()
    {
      using namespace std;
      cout << Array1[0] << endl;
      ...
    }
    

    wenn es eine unveränderliche "Lookup-Table" sein soll. Oder

    #include <iostream>
    #include <ostream>
    #include <vector>
    #include <string>
    
    int main() {
      using namespace std;
      vector<string> Array1;
      Array1.push_back("Schueler1");
      Array1.push_back("Schueler2");
      cout << Array1[0] << endl;
      ...
    }
    

    falls Du Zeichenketten und/oder die Zahl der Elemente zur Laufzeit ändern willst.


Log in to reply