Leerzeichen ignorieren



  • Hardcore C++ Coder schrieb:

    @ TobiisFreaky
    using namespace suckt! benutz es nie mals, vorallen nicht in headern.

    In Hedaer-Dateien vielleicht, warum aber soll "using namespace" in Quellcodedateien "sucken"?

    MfG SideWinder



  • so nach der kleinen Hilfestellung eurerseits, habe ich das Programm soweit fertig.
    Ihr könnt euch das ganze Programm mal anschauen und genauer unter die Lupe nehmen wenn ihr wollt. Verbesserungsvorschläge sind gerne gesehen.

    Vielen Dank nochmal an alle!

    ps: Es ist eine Vererbung an eine weitere Klasse "Mitarbeiter" enthalten.

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    class Person
    {
          private:
                  string name;
                  string adresse;        
          public:      
                  void persDatenAusgeben();
                  void persDatenEingeben();     
    };
    
    void Person::persDatenEingeben()
    {
         cout<<"Name: "<<endl;
         getline(cin, name); 
         cout<<"Adresse: "<<endl;
         getline(cin, adresse);
         return;
    };
    
    void Person::persDatenAusgeben()
    {
         cout<<"\n\n\nIhr Name ist: "<<name<<endl;  
         cout<<"Ihre Adresse lautet: "<<adresse<<endl; 
         return;        
    };
    
    class Mitarbeiter : public Person //Klasse Mitarbeiter erbt Objekte von Person
    {
          private:
                  char einstellungsDatum[50];  
          public:
                  void einstellungsDatumAusgeben();
                  void einstellungsDatumEingeben();      
    };
    
    void Mitarbeiter::einstellungsDatumEingeben()
    {
         cout<<"Bitte Einstellungsdatum angeben: "<<endl;  
         cin>>einstellungsDatum;   
         return;
    }
    
    void Mitarbeiter::einstellungsDatumAusgeben()
    {
         cout<<"\n\nEinstellungsdatum: "<<einstellungsDatum;   
         return;
    }
    
    int main()
    {
    //    Person p1;
        Mitarbeiter m1;
    //    p1.persDatenEingeben();
    //    p1.persDatenAusgeben();
        m1.persDatenEingeben(); //können ggf. noch sortiert werden je nach Ausgabe.
        m1.persDatenAusgeben();
        m1.einstellungsDatumEingeben();
        m1.einstellungsDatumAusgeben();
    
        getch();
    }
    


  • benutze anstelle von char[..] einen std::string.



  • //Klasse Mitarbeiter erbt Objekte von Person

    Von Objekten kann nicht geerbt werden, nur von Klassen.



  • #include <conio.h>

    Wird soweit ich weiss nicht benötigt, also raus.



  • return ohne den control fluss zu ändern und bei void return type ist sinnlos.
    also weglassen.



  • simon.gysi schrieb:

    //Klasse Mitarbeiter erbt Objekte von Person

    Von Objekten kann nicht geerbt werden, nur von Klassen.

    Aber die Objekte (public) aus der Klasse werden doch weitervererbt oder stimmt das nicht?



  • simon.gysi schrieb:

    #include <conio.h>

    Wird soweit ich weiss nicht benötigt, also raus.

    muss gesetzt werden, da das getch(); ansonsten nicht erkannt wird.



  • die return; waren überflüssig, hattest Recht.
    Außerdem die Semikolon hinter den Funktionen ebenfalls.
    Danke!



  • naja es gibt besser möglichkeiten statt getch(); am ende eines programms...

    guck dazu mal in die faq
    ansonsten sieht dein programm ganz ok aus für einen anfänger

    aber was du beim nächsten mal amcehn könntest wäre stt den code tags hier im forum die c++ tags zu verwenden
    statt [ code] [ /code] schreisbt du [ cpp] [ /cpp] (natürlich ohne leerzeichen...)



  • Hmmm ich habe jetzt eine Virtuelstunde in den FAQ nachgekuckt und nichts darüber gefunden -.-

    Mein Programmierlehrer schreibt am Ende aber auch immer getch();

    Warum ist das denn so falsch???

    Tobi



  • TobiisFreaky schrieb:

    Hmmm ich habe jetzt eine Virtuelstunde in den FAQ nachgekuckt und nichts darüber gefunden -.-

    Mein Programmierlehrer schreibt am Ende aber auch immer getch();

    Warum ist das denn so falsch???

    Tobi

    Weils kein Standard ist. Dein Lehrer hat sich wohl lange nicht mehr mit C++ bzw. dessen Entwicklung befasst, wenn er char-Arrays und plattform- und/oder compilerspezifisches lehrt.

    #include <iostream>
    #include <limits>
    // ...
    // ...
    int main()
    {
    // ersetzt getch() ganz gut...
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    

    wäre eine möglichkeit, getch() zu ersetzen.



  • Kann dem jungen mal jemand den Unterschied zwischen:

    std::cout << "\n\nblabla" << std::endl;
    

    und

    std::cout << std::endl << std::endl << "blabla" << std::endl;
    

    erklären? Ist ja grauenvoll was hier praktiziert wird. In welchem verkackten Tutorial/Buch steht denn bitteschön das \n und std::endl equal sind?!



  • Nautilus schrieb:

    Kann dem jungen mal jemand den Unterschied zwischen:

    std::cout << "\n\nblabla" << std::endl;
    

    und

    std::cout << std::endl << std::endl << "blabla" << std::endl;
    

    erklären? Ist ja grauenvoll was hier praktiziert wird. In welchem verkackten Tutorial/Buch steht denn bitteschön das \n und std::endl equal sind?!

    Hm ich hab mal durch den Thread geblättert und nirgendwo gesehn dass jemand behauptet hätte, die beiden Dinge seinen "equal" - es hat auch niemand behauptet die std::endl Version wäre besser, also wo ist das Problem?
    Ich nehme einfach mal an dass der OP das \n absichtlich eingesetzt hat, um das ständige flushen des Streams zu vermeiden - inmho ein legitimer Grund.


Anmelden zum Antworten