Anfängerfrage!



  • Hallo Leute!

    Ich bin absolut neu in C++ und mache gerade meine ersten Gehversuche. Jetzt habe ich ein Verstännisproblem bei ner Sache:

    struct Person
    {
    	string Vorname;
    	string Nachname;
    	int Alter;
    };
    
    void Test() {
    
    	Person p1;
    	p1.Vorname = "Hans";
    	p1.Nachname = "Wurst";
    	p1.Alter = 25;
    
    	// cout << p1.Vorname;
    
    	printf("Die Person %s ist %d Jahre alt!", p1.Vorname, p1.Alter);
    
    	//cout << p1.Alter;
    
    	printf("\n");
    	system("PAUSE");
    }
    

    Erstmal geht

    cout << p1.Vorname
    

    nicht, da meckert er rum, dass "<<" kein passender Operator wäre.

    cout << "Test"
    

    (was ja auch n String ist geht)..

    Bei

    printf("Die Person %s ist %d Jahre alt!", p1.Vorname, p1.Alter);
    

    schreibt er für p1.Vorname irgendeinen Kauderwelsch in die Konsole, aber nicht den String den ich bei p1.Vorname vergeben habe.

    Ihr wisst mit Sicherheit woran das liegt und lacht gerade über diesen Anfängerfehler... 😉

    Ich danke Euch für die Hilfe!!!



  • Evtl folgendes vergessen?

    #include <iostream>
    #include <string>
    


  • Das #include <string> hat mir gefehlt!! Vielen Dank für den Hinweis!

    Jetzt kann ich auch das

    cout << p1.Vorname

    machen!

    Bei der Ausgabe

    printf("Die Person %s ist %d Jahre alt!", p1.Vorname, p1.Alter);
    

    setzt er jetzt aber für beide Variablen Kauderwelsch ein?!

    Danke für die Hilfe!!



  • Zu 2.:

    printf erwartet bei %s als Formatparameter einen NUL-terminierten C-String. Du übergibst aber einen std::string. Dass das nicht funktioniert, hast du ja bereits selbst bemerkt. Du müsstest also p1.Vorname.c_str() als Parameter übergeben.

    Der Vollständigkeit halber: Du solltest C++ und C nicht mischen. Du siehst ja, was leicht dabei schief gehen kann.


Anmelden zum Antworten