PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Zeitvergleiche



klaus_harrer
09-11-2003, 16:50
Hallo

Habe mich erst vor kurzen mit C++ angefangen zu beschäftigen.

Nun das Probem

Ich habe einen kleinen Counter versuch zu basteln:


#include <iostream>
#include <ctime>
#include <string>
using namespace std;


int main()
{
int later, Value1;
char *Zeit;
cout << "Geben sie eine Zahl ein :" << endl;
cin >> Value1; /* Eingabe zur errechnung des Endwertes*/
time_t now = time(0); /*Initialisierung des Wertes zum errechnen des Endwertes*/
later = now + Value1; /*EndZeit*/
time_t now0 = time(0); /* Aktuelle Zeit */
while(now0 < later)
{
time_t now0 = time(0);
Zeit = ctime(&now0);
cout << Zeit;
if (now0 == later)
{
cout << "Das waren " << Value1 << " Sekunden" << endl;
break;
}
}
return 0 ;

Nun gibt der Counter endlos viele Zeilen aus. Gibt es da eine Möglichkeit dies in einer Zeile zu realisieren? Ich hatte da eine Idee mit strcpy() aber keine Idee wo oder wie ich den zweiten Wert herbekomme.

strcpy(Zeit,?)

Ich hoffe das ihr mir da weiterhelfen könnt.

MfG
Klaus

wraith
09-11-2003, 17:02
if(char *p = strchr(Zeit,'\n'))
*p = 0;
cout << '\r' << Zeit;

Besser wäre aber,die Zeit in einen Buffer zukopieren,und dort '\n' zu löschen.

klaus_harrer
10-11-2003, 09:06
Hallo

Buffer?
Leider steht in dem Buch "C++ echt einfach " nicht drin wie ein Buffer erzeugt und daten hineinkopiert werden. Habe im Netz gesucht und folgendes zusammengereimt.

ein Buffer wird

char buffer[];

erzeugt, und mittels memcpy() hineinkopiert.

Wie kann ich die Daten weiterverarbeiten?

Ich weiss es ist nicht viel, aber würde gerne wissen ob ich auf den richtigen Weg bin.

MfG
Klaus

wraith
10-11-2003, 09:43
Original geschrieben von klaus_harrer

Buffer?
Leider steht in dem Buch "C++ echt einfach " nicht drin wie ein Buffer erzeugt und daten hineinkopiert werden. Habe im Netz gesucht und folgendes zusammengereimt.

Na,ich meinte damit einfach nur ein char Array fester Größe,oder eines was zur Lautzeit mit new erzeugt wurde.


char buffer[80];
oder
char *buffer = new char[80];
...
delete [] buffer;

In deinem Fall müßte ein Buffer fester Größe reichen,denn die Zeit als String wird nur eine bestimmte maximale Länge haben.


char buffer[BIG_ENOUGH];
strcpy(buffer,Zeit);




Wie kann ich die Daten weiterverarbeiten?

Was willst du jetzt mit den Daten genau machen?War der Codeschnipsel von oben nicht das was du wolltest?

klaus_harrer
10-11-2003, 10:01
Hallo

Lass mich das mmal kurz nachvollziehen

Du erzeugst einen buffer

buffer[..];
und kopierst die daten von Zeit in Buffer

strcpy(Buffer,Zeit)

löscht man '\n' jetzt bevor man den Buffer erzeugt hat und kopiert den String dann in den Buffer und gibt ihn dann mittels

cout << buffer dann aus?

MfG
Klaus

wraith
10-11-2003, 10:05
Original geschrieben von klaus_harrer

und kopierst die daten von Zeit in Buffer

strcpy(Buffer,Zeit)

löscht man '\n' jetzt bevor man den Buffer erzeugt hat und kopiert den String dann in den Buffer und gibt ihn dann mittels

Kopiere erstmal alles in den Buffer,und dann löscht du '\n'.

Andere (aufwendigere Möglichkeit),du kopierst alles bis zum '\n' (und ohne das du '\n' kopierst) in den Buffer.

klaus_harrer
10-11-2003, 10:35
Also wie folgt

#include <iostream>
#include <ctime>
#include <string>
using namespace std;


int main()
{
int later, Value1;
char *Zeit, buffer[30];
cout << "Geben sie eine Zahl ein :" << endl;
cin >> Value1; /* Eingabe zur errechnung des Endwertes*/
time_t now = time(0); /*Initialisierung des Wertes zum errechnen des Endwertes*/
later = now + Value1; /*EndZeit*/
time_t now0 = time(0); /* Aktuelle Zeit */
while(now0 < later)
{
time_t now0 = time(0);
Zeit = ctime(&now0);
strcpy(buffer,Zeit);
if(char *p = strchr(buffer,'\n'))
{
*p = 0;
}
cout << '\r' << buffer;
if (now0 == later)
{
cout << "Das waren " << Value1 << " Sekunden" << endl;
break;
}
}
return 0 ;

Ist das so gemeint?

MfG
Klaus