Hallo, ich habe zwei Strings, die ich in ein Format umwandeln möchte. 1. String: Datum: 160707 --> 16/07/07 2. String: Zeit : 102001 --> 10:20:01 Wie kann ich dies in C++ realisieren?
Erster String: 160707 soll umgewndelt werden in 16/07/07 Zweiter String: 102001 soll umgewndelt werden in 10:20:01
Peter wrote: > Hallo, ich habe zwei Strings, die ich in ein Format umwandeln möchte. > > 1. String: Datum: 160707 --> 16/07/07 > 2. String: Zeit : 102001 --> 10:20:01 > > Wie kann ich dies in C++ realisieren? Indem du mit den Stringfunktionen die einzelnen Teile herauslöst und neu arrangierst. std::string hat eine Memberfunktion substr Alternativ könnte man auch auf die einzelnen Character im String direkt zugreifen. Aber nur wenn garantiert ist, dass der Aufbau des Strings immer gleich ist std::string first = "160707"; std::cout << first[0] << first[1] << "/" << first[2] << first[3] << "/" << first[4] << first[5];
Wo ist das Problem? Zwei Zeichen aus dem Quellstring extrahieren, Füllzeichen einfügen, weitere zwei Zeichen extrahieren, Füllzeichen einfügen, restliche Zeichen aus Quellstring extrahieren. Ganz plump: char* quelle char ziel[10]; ziel[0] = quelle[0]; ziel[1] = quelle[1]; ziel[2] = ':'; ziel[3] = quelle[2]; ziel[4] = quelle[3]; ziel[5] = ':'; ziel[6] = quelle[4]; ziel[8] = quelle[5]; ziel[9] = '\0'; Lässt sich sicherlich hübscher erledigen.
Das bleibt dem geneigten Leser überlassen. Bei etwas über 30° Raumtemperatur darf ich Ziel[7] übersehen.
Wie könnte ich dann das Datum und die Uhrzeit in Integer umwandeln? 1. Datum: 16/07/07 --> year=07,mon=07,day=16 2. Zeit : 10:20:01 --> hour=10,min=20,sec=01 Ich hab es mal so gelöst: char buf[20]; char temp[3]; int hour; strcpy(time, buf); temp[0] = buf[0]; temp[1] = buf[1]; temp[2] ) '\0'; hour = atoi(temp); WIe könnte man dies eleganter lösen?
Peter wrote: > Wie könnte ich dann das Datum und die Uhrzeit in Integer umwandeln? > > 1. Datum: 16/07/07 --> year=07,mon=07,day=16 > 2. Zeit : 10:20:01 --> hour=10,min=20,sec=01 > > Ich hab es mal so gelöst: > > char buf[20]; > char temp[3]; > int hour; > > strcpy(time, buf); > temp[0] = buf[0]; > temp[1] = buf[1]; > temp[2] ) '\0'; > hour = atoi(temp); > > WIe könnte man dies eleganter lösen? Indem du dich daran erinnerst, dass die Zahl 52 (ist nur ein Beispiel, geht auch mit allen anderen Zahlen) nichts anderes ist als 5 * 10 + 2 10:20:01 hour = ( buf[0] - '0' ) * 10 + ( buf[1] - '0' ); Noch eleganter wird das mit ein paar kleinen Hilfsfunktionen
1 | unsigned char Digit( char Character ) |
2 | {
|
3 | return Character - '0'; |
4 | }
|
5 | |
6 | int ToNumber( const char* String ) |
7 | {
|
8 | return Digit( String[0] ) * 10 + Digit( String[1] ) ); |
9 | }
|
10 | |
11 | int main() |
12 | {
|
13 | char Buff[] = "10:20:01"; |
14 | int Hour, Min, Sec; |
15 | |
16 | Hour = ToNumber( Buff ); |
17 | Min = ToNumber( &Buff[3] ); |
18 | Sec = ToNumber( &Buff[6] ); |
19 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.