Zeit-Funktion in C++



  • Diese Funktionen sind mir mehr oder weniger bekannt.
    Ich weiss nicht wie ich mein Problem mit ihnen lösen soll, weil die auch mit einer eingabe wie tag=32, monat=19 oder so weiter rechnen, ohne einen fehler zu melden. Womit merkt er dass solche eingaben falsch sind????



  • Sorry, ich sollte erst lesen, dann schreiben 🙄

    #include <iostream>
    #include <string>
    
    int main()
    {
     int d,m,y;
     std::string str("28.10.1999");
     std::string::size_type Pos1=0;
     std::string::size_type Pos2=0;
     Pos2=str.find(".", Pos1);
     d=std::atoi(str.substr(Pos1, Pos2 - Pos1).c_str());
     ++Pos2;
     Pos1=Pos2;
     Pos2=str.find(".", Pos1);
     m=std::atoi(str.substr(Pos1, Pos2 - Pos1).c_str());
     ++Pos2;
     Pos1=Pos2;
     Pos2=str.length();
     y=std::atoi(str.substr(Pos1, Pos2 - Pos1).c_str());
     std::cout<<d<<"\n"<<m<<"\n"<<y<<std::endl;
    }
    

    Wäre das denn eine Möglichkeit?
    So hätte man die Zahlen in einzelnen Variablen und könnte so einiges damit machen 😃
    Jetzt noch ein paar Fehlerabfragen, if(...) usw (evtl. den Code ein wenig "verschönern"), dann könnte das funktionieren!



  • Erstmal danke @fubar.
    Jetzt ist die Sache, dass ich ein Anfänger bin und mich mit 'std' nicht so gut auskenne. Mein Compiler meldet mir drei fehler mit deinem Code und ich weiss nicht was ich da tun kann. Würdest du mir vielleicht noch mal helfen??



  • Dann gib doch mal die Fehlermeldungen an, dann können wir weiter helfen 😉



  • error C2039: 'atoi' : is not a member of 'std'
    und davon drei Stück!
    Ich kann damit nichts anfangen, kenne mich mit iostream nicht gut aus.



  • Dann binde doch mal cstdlib mit ein

    #include <cstdlib>
    

    Oder laß mal das std:: testweise davor weg...



  • Ok. Ohne std:: funkt. es.
    Aber wie kriege ich in den String das gewünschte Datum???



  • Diego6 schrieb:

    Aber wie kriege ich in den String das gewünschte Datum???

    Etwas genauer bitte 😕

    std::string datum;
    std::cout<<"Bitte Datum eingeben:";
    std::cin>>datum;
    

    Oder wie jetzt?



  • Er arbeitet doch mit 28.10.1999. Das ist die Zeichenkette, die in den Gänsefüsen steht. Da muss aber ein Datum eingegeben werden. Und ich weiss nicht wie das geht... 😞



  • Siehe Posting oben:

    std::string str; 
    std::cout<<"Bitte Datum eingeben:"; 
    std::cin>>str;
    

    Dann bist du nicht mehr auf ein Datum beschränkt 😃


Anmelden zum Antworten