Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » GPS Daten konvertieren (Datei auslesen und neu schreiben)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.10.2006, 14:11 Uhr
cybrid



Hallo,

ich kann ein wenig Pascal und PHP und versuche gerade von Pascal auf C++ umzusteigen.
Vielleicht kann mir jemand eine Starthilfe geben. Ich komme mit der Syntax noch nicht so ganz klar.
Hab schon ein paar Tutorials durchgekaut aber es will nicht klappen.
Ein grober Code würde mir schon genügen.


Ich habe eine Datei mit GPS Koordinaten die ich für die weitere Verwendung in einem anderen Format brauche.

Die Datei (tracklog.log) hat folgendes Format:

# Tracker started at Sun Oct 22 14:14:46 GMT+01:00 2006
5139.0612;N;00653.8941;E;0.00;165.7;M;06-10-22;12:15:06
5139.0623;N;00653.8942;E;0.00;165.7;M;06-10-22;12:15:09
5139.0635;N;00653.8943;E;0.00;165.7;M;06-10-22;12:15:11
5139.0666;N;00653.8944;E;0.00;165.7;M;06-10-22;12:15:14

Nach dem Konvertieren soll das Ergebnis dann so aussehen:
XKoord0=6.538941
YKoord0=51.390612
XKoord1=6. 538942
YKoord1=51.390623
XKoord2=6. 538943
YKoord2=5.1390635
XKoord3=6. 538944
YKoord3=51.390666


Mein Programm soll das machen:
Die #-Zeile wird direkt übersprungen.
Der erste Wert bis zum Semikolon /100 wird der YKoord[i] Wert.
Das Zeichen bis zum nächsten Semikolon brauch ich nicht.
Der nächste Wert bis zum Semikolon /100 wird zum XKoord[i] Wert.
Das reicht. Sprung zur nächsten Zeile. Und das ganze nochmal und solange bis feof.

gruß
cybrid
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.10.2006, 12:47 Uhr
Pler
Einer von Vielen
(Operator)


Wenn du schon Pascal kannst, solltest du den "groben" Code auch selber hinbekommen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.10.2006, 09:39 Uhr
cybrid



Hallo Pler,

ich habs mittlerweile so einigermaßen hinbekommen.
Nicht schön, aber es tut's erstmal.

Was ich nicht so ganz verstehe ist das strtok.
Wieso bekomme ich in der untergeordneten Schleife das 1. String Stück nicht ausgegeben und muß es mir vor der Schleife ausgeben lassen?

Da ich in der endgültigen Ausgabe die beiden benötigten Werte vertauschen muß und ich es nicht schaffe den ersten Wert in einer Variable abzulegen, macht mir das Probleme.
So wie es jetzt ist, bekomme ich erst XKoord und dann YKoord ausgegeben. Es muß aber genau andersherum sein.

Besser wäre es die Zeile in ein Array einzulesen, welches direkt die Zeile aufteilt.
Dann könnte ich bei der Ausgabe in etwa sowas machen: cout << koord[1] << "," << koord[3] << endl;
Wie kann man das machen?
Das wäre perfekt.

Ausserdem muß ich die String auch noch durch 100 teilen. Wie wandelt man ein string in einen Int?


Den Rest kriege ich mittlerweile hin.

Hier der wichtigste Teil meines bisherigen Codes.

Code:
...
char lineBuffer[MAXLEN];

int i=0;
int y=0;
char* koord=strtok(lineBuffer,";");

while (true)
{
    fin.getline(lineBuffer,MAXLEN);
    if (fin.eof())
      return false;
      
  char* xkoord=strtok(lineBuffer,";");
  cout << "XKoord" << i << "=" << xkoord << endl;   //würde ich mir gerne sparen


          while ( (xkoord = strtok(NULL, ";")) )
          {
        if (y==2)  //Ich brauche nur das 2. String Stück aus der Zeile
        {
        cout << "YKoord" << i << "=" << xkoord << endl;
        }
        y++;
          }
    i++; y=0;
}    


Dieser Post wurde am 26.10.2006 um 09:43 Uhr von cybrid editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.10.2006, 12:47 Uhr
Pler
Einer von Vielen
(Operator)


Wenn du schon C++ nutzt, kannst du dir mal std::string anschaun.
Und wenn ich das richtig sehe, steht das was du brauchst immer an der geleichen Stelle, dann kannst du das direkt, ich glaube mit std::stding::substr(), rausholen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: