Frage zur Formatierung
-
Hallo
Lese Daten von einem GPS Empfänger ein und will diese in eine TXT Datei speichern.
Meine Frage wie kann ich die Daten Protokolle formatieren.
Das Startzeichen ist ein $ das Ende Zeichen ein LF.
So kommen die Daten jetzt and
213123,821312 E,1313,12312,123123,1*49
3312RMC13112312,123,,,12312,3,,,12312,,,,,*4D
usw.So solls dann ausehen
RMC13112312,123,,,12312,3,,,12312,,,,,*4D
$VTG123123,12312,3,21,312,3,123,*6Tusw.
Vielen Dank
Herrmann
-
Du kannst die Daten in einem String speichern und dort nach $ bzw \n suchen, um die richtigen Teile auszuschneiden.
-
Hallo Herrmann,
Du kannst die Zeichen von einem Pacman fressen lassen

#include <iostream> class Pacman { public: enum state_t { idle, store }; Pacman( std::ostream& out ) : m_state( idle ), m_out( out ) {} void friss( char z ); private: state_t m_state; std::ostream& m_out; static const char start = '$'; static const char end = '\n'; }; void Pacman::friss( char z ) { switch( m_state ) { case idle: if( z == start ) { m_out << z; m_state = store; } break; case store: if( z == end ) { m_state = idle; m_out << std::endl; } else { m_out << z; } break; default: // ??? break; } }kleines Test-Programm dazu:
#include <algorithm> #include <functional> #include <fstream> int main() { using namespace std; const char input[] = "213123,821312 E,1313,12312,123123,1*49\n" "3312$GMC3313121312N,w12312312E,3123,,,,,,12321,,,*87\n" "$RMC13112312,123,,,12312,3,,,12312,,,,,*4D\n" "$VTG123123,12312,3,21,312,3,123,*6T\nquatsch"; ofstream file("output.txt"); Pacman pac( file ); for_each( input, input + strlen(input), bind1st( mem_fun( &Pacman::friss ), &pac ) ); return 0; }:xmas2: Werner
Edit: break vergessen ...
-
Habe es danke urer hilfe hinbekommen.
Vielen Dank
Herrmann