Problem mit char[] und char-Arrays



  • Hallo,

    Ich würde gerne einer char[]-Variablen einen Text aus einem Element einem Feld von char[] Variablen zuordnen.

    char *typen [] = {"Boeing 717","Boeing 727","Boeing 737","Boeing 747",
                   "Boeing 757","Boeing 767","Boeing 777","Boeing 787",
                   "Airbus A300","Airbus A310","Airbus A320","Airbus A330",
                   "Airbus A340","Airbus A380","Cessna Skyhawk"
                   };
    char typ[] = "Boeing 737 (Standard)";
    

    und später:

    typ[] = typen[opts];
    

    , wobei opts eine Variable in int ist, die mit einem Wert( z.B. 2 ) belegt ist.

    Ich bekomme die Fehlermeldung:

    expected primary-expression before ']' token
    

    Kann mir da jemand helfen ???

    vielen Dank schon mal im voraus

    Tim



  • Du kannst Arrays nicht zuweisen. Das naheliegende ist, die Variable typ als Zeiger auf const char zu deklarieren. Aber dann musst du sehr aufpassen, dass du nur lesend zugreifst...

    Du hast auch alle die Probleme nicht, wenn du std::vector mit std::string verwendest.



  • Nexus schrieb:

    Du hast auch alle die Probleme nicht, wenn du std::vector mit std::string verwendest.

    kannst du mir mal ein konkretes beispiel geben, wie ich diese verwende ?
    Also std::string kenn ich ja schon, aber std::vector ...



  • #include <vector>
    #include <string>
    
    typedef std::vector<std::string> StringCollection;
    
    int main()
    {
       StringCollection coll;
       coll.push_back("test1");
       coll.push_back("test2");
    
       const std::string& s1 = coll[0];
       const std::string& s2 = coll[1];
    }
    

    Simon



  • Um tiefergehendes Verständnis der Standard Template Libary (dazu gehört std::vector ) zu erhalten, kannst du ja mal diesen Artikel anschauen.



  • Ich habs mir jetzt einfacher gemacht:

    Ich nehm jetzt einfach überall, wo ichs brauch, typen[opts] statt typ.

    Danke trotzdem für die Hilfe !



  • Warum nicht gleich std::string ? Das ist wohl das Einfachste.


Anmelden zum Antworten