Zeit zur Eingabe C++

Technikkacki

Grünschnabel
Hy die ist mein erster Post und ich hoffe das mir geholfen werden kann.
Wollte euch mal fragen, ob man irgendwie die Zeit stoppen kann, die vergeht bis der user seine Eingabe abgeschlosen hat, dass alles unter c++. Weiss auch noch nicht ob das irgendwie geht übrigens alles unter der Konsole also als kleine Beispiel:
code
#######################################################

cout <<"Bitte geben sie ihren Namen ein:";
cin >> name;

#######################################################

also jetzt würde ich gerne die Zeit herausbekommen die vergangen ist bis die Namenseingabe mit ENTER abgeschlossen ist.
Würd mich freuen wenn mir mal jemand auf die Sprünge helfen würde,
also dan freu mich über jeden Rat.

gruß euer Kacki
 
Hi,

ich habe so etwas mal mit dem Vergleich von Zeitstempeln gemacht, indem ich einen für die Ausgabe und einen für eine Bastätigung bzw. return gesetzt, im array gesetzt, und zum Schluss die Daten umgerechnet und verglichen habe. Das ist zwar etwas umständlich, aber dient gleichzeitig der Aufnahme von loggin-Daten. Ich setzt einfach mal meinen Code für den Zeitstempel rein. Das ist aber C++ in .NET ... vielleicht hilft es dir ja:

Code:
CString CSQL_MODULDlg::TimeStampFormat()
{/*
struct tm {
   int tm_sec;      // Sekunden - [0,61] 
   int tm_min;      // Minuten - [0,59] 
   int tm_hour;     // Stunden - [0,23] 
   int tm_mday;     // Tag des Monats - [1,31] 
   int tm_mon;      // Monat im Jahr - [0,11] 
   int tm_year;     // Jahr seit 1900 
   int tm_wday;     // Tage seit Sonntag (Wochentag) - [0,6] 
   int tm_yday;     // Tage seit Neujahr (1.1.) - [0,365] 
   int tm_isdst;    // Sommerzeit-Flag 
}*/
	time_t Zeitstempel;
    tm *jetzt;
    Zeitstempel = time(0);
    jetzt = localtime(&Zeitstempel);
	CString Sekunde,Minute,Stunde,Tag,Monat,Jahr,Stempel,Datum,Uhrzeit;

	//in String formatieren
	Sekunde.Format("%d",jetzt->tm_sec);
	Minute.Format("%d",jetzt->tm_min);
    Stunde.Format("%d",jetzt->tm_hour);
	Tag.Format("%d",jetzt->tm_mday);
	Monat.Format("%d",jetzt->tm_mon+1);
	Jahr.Format("%d",jetzt->tm_year-100);

	//wenn nötig Null davor setzten
	Datum=Tag+"."+Monat+"."+"0"+Jahr;
	if(strlen(Tag)<2)
		Datum="0"+Tag+"."+Monat+"."+"0"+Jahr;
    if(strlen(Monat)<2)
		Datum=Tag+"."+"0"+Monat+"."+"0"+Jahr;

	Uhrzeit=Stunde+":"+Minute+":"+Sekunde;
	if(strlen(Stunde)<2)
		Uhrzeit="0"+Stunde+":"+Minute+":"+Sekunde;
	if(strlen(Minute)<2)
		Uhrzeit=Stunde+":"+"0"+Minute+":"+Sekunde;
	if(strlen(Sekunde)<2)
		Uhrzeit=Stunde+":"+Minute+":"+"0"+Sekunde;

	Stempel=Datum+"  "+Uhrzeit;

    return Stempel;
}
 
Danke für deine schnelle Antwort der Code mit den Timestamps hat mir geholfen einen Ansatz zu finden.
Werd mal versuchen die Zeit nach der Ausgabe cout <<"..."; auf millisecunden genau zu stoppen und in einer Variable speichern. Dannach die Zeit nach der eingabe und werde die Werte mal vergleichen die Differenz aus beiden sollte die Eingabezeit ergeben. Vielen dank !

gruß Kacki
 
wie wäre es enn du time.h oder wie die heixt includest und dann nach cout<<".."<<endl;
einfach eine variable auf die aktuelle zeit setzt x=time; und dann direkt nach cin<<z;
y=time; nun must du nur noch dir differenz ausrechen und hast deine zeit (ich glaut time.h ist aus ms genau).
 
Habs genauso gemacht klappt auch, sieht aber sehr verbesserungswürdig aus;=)

code
#######################################################

AnsiString jetzt, sekund, jetzt2, sekund2;
double now, later, dif;

jetzt = TimeToStr(Time()); // jetzige Zeit "hh:mm:ss"
sekund = jetzt.SubString(7,8); // Sekunden rausnehmen
now = sekund.ToDouble(); // Sekunden nach double umwandel
cout << " Bitte Enter drucken ";
cout << now <<"sec\n"; //erste Zeit ausgeben
getch();
// hier dasselbe mit der Zweiten Zeit
jetzt2 = TimeToStr(Time());
sekund2 = jetzt2.SubString(7,8);
later = sekund2.ToDouble();
cout << later <<"sec\n";
getch();

// Zeiten vergleichen
if(later < now)
{
dif = (later+60)-now;
}
else dif = later - now;
cout << "Die Differenz betragt: " << dif; //ausgabe
getch();

##############################################################

Glaube das es auch Timecopare Funktionen gibt in time.h. Werd ich gleich auch mal probieren um genauere Werte zu erhalten z.B im Millisec Bereich.
ohne die Strings und so ...
Bis dahin besten dank nochmals, bin für jeden weitern tip offen.

gruß kacki
 
Zuletzt bearbeitet:
vereinfachte Zeitausgabe:

Code:
CString TimeStampFormat()
{
     CTime time = CTime::GetCurrentTime();
     CString str = time.Format("%H:%M:%S  %d.%m.%Y");

     return str;
}


Mit CtimeSpan kannst du mit drei bis fünf Zeilen die Zeitspanne zwischen Start und Endzeit ermitteln... das geht einfacher und es besteht die möglichkeit zw. Local und gm Time ...
greetz
 
Hey MFC und C++, das ich nicht lache :D:D:D

C++:
#include <ctime>

int main()
{
    std::cout << "Variable \"a\": ";
    unsigned int var(0);

    // anfangszeit speichern
    const std::time_t  time_start(std::time(NULL));
    
    std::cin >> var;

    // endzeit - anfangszeit in sekunden ausgeben
    std::clog << "Sie brauchten " << std::difftime(std::time(NULL), time_start) << "sec für ihre Eingabe!" << std::endl;
}
...
 
Zurück