Struktur aus map ausgeben



  • Hallo,
    programmiere gerade ein kleines Beispiel mit maps und Strukturen.
    In der map habe ich den Key vom Typ int und eine Struktur.

    struct book{char titel[20], autor[20], genre[20];int jahr, ISBN;};
    
    map<int,book> books;
    

    Die Struktur fülle ich dann in einer Schleife mit Daten die der Nutzer über Console eingeben kann und füge diese dann der map hinzu:

    books.insert(pair<int,book>(id,*B) );
    

    Jetzt möchte ich noch die angelegten Daten der Bücher mit cout ausgeben. Wie kann ich das machen?
    Habe schon mit folgendem Code probiert:

    for(it = books.begin();it!=books.end();++it)				
    					cout<<it->first << ": " << it->second << endl;
    

    Jedoch kommt da ein Konvertierungsfehler.



  • xXMartinoXx schrieb:

    Jedoch kommt da ein Konvertierungsfehler.

    Du machst was falsch.

    Wie soll die hier jemand eine vernünftige Antwort geben, wenn du nicht die genaue Fehlermeldung nennst?

    Wenn du keinen Ausgabeoperator für deine Struktur definiert hast wird es natürlich nicht gehen, das hat aber mit der map nichts zu tun.

    Warum benutzt du char-Arrays statt std::string?



  • manni66 schrieb:

    xXMartinoXx schrieb:

    Jedoch kommt da ein Konvertierungsfehler.

    Du machst was falsch.

    Wie soll die hier jemand eine vernünftige Antwort geben, wenn du nicht die genaue Fehlermeldung nennst?

    Wenn du keinen Ausgabeoperator für deine Struktur definiert hast wird es natürlich nicht gehen, das hat aber mit der map nichts zu tun.

    Warum benutzt du char-Arrays statt std::string?

    Bitteschön:

    error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'const main::book' akzeptiert (oder keine geeignete Konvertierung möglich)
    

    Wie definiere ich so einen Ausgabeoperator? Bin auf dem Gebiet noch ziemlich unbeleckt.

    char benutze ich weil die Daten ja per Eingabe über Konsole vom user kommen, das ging mit string gar nicht.



  • xXMartinoXx schrieb:

    Wie definiere ich so einen Ausgabeoperator? Bin auf dem Gebiet noch ziemlich unbeleckt.

    zum Beispiel so:

    std::ostream& operator<<( std::ostream& out, const book& b )
    {
        out << "Titel: " << b.titel << "\n";
        out << "Autor: " << b.autor << "\n";
        out << "Genre: " << b.genre << "\n";
        out << b.jahr << ", ISBN: " << b.ISBN << "\n";
        return out;
    }
    

    xXMartinoXx schrieb:

    char benutze ich weil die Daten ja per Eingabe über Konsole vom user kommen, das ging mit string gar nicht.

    .. sicher geht das!



  • Werner_logoff schrieb:

    xXMartinoXx schrieb:

    Wie definiere ich so einen Ausgabeoperator? Bin auf dem Gebiet noch ziemlich unbeleckt.

    zum Beispiel so:

    std::ostream& operator<<( std::ostream& out, const book& b )
    {
        out << "Titel: " << b.titel << "\n";
        out << "Autor: " << b.autor << "\n";
        out << "Genre: " << b.genre << "\n";
        out << b.jahr << ", ISBN: " << b.ISBN << "\n";
        return out;
    }
    

    xXMartinoXx schrieb:

    char benutze ich weil die Daten ja per Eingabe über Konsole vom user kommen, das ging mit string gar nicht.

    .. sicher geht das!

    Danke für den code. Probier ich dann gleich mal aus. OK dann hab ich das mit den strings vielleicht falsch gemacht...


Log in to reply