string zerlegen
-
Hallo zusammen,
ich möchte folgende Textdatei (s. unten) derart ändern, dass die Reihenfolge der Daten wieder stimmt und zwar geordnet nach der richtigen vorgegebenen Reihenfolge der Channel (die unten gezeigten Namen, z. B. "xxx_111" sind fiktiv).
Beispiel:
die richtige Reihenfolge wäre:
xxx_111
xxx_222
xxx_333
xxx_444
xxx_555
das geht über 40 Kanäle so weiter...Dazu müssen die Einheit (UNIT) und die Messwerte (nach "data") ebenfalls in ihrer Positionen bzw. Spalte getauscht werden.
BEGIN
CHANNELNAME = ['xxx_111','xxx_444','xxx_555','xxx_222','xxx_333']
UNIT = ['"bar "','" "','"km/h "','"km/h "','" "']
data
232 2312 4343 1321 2131
321 3432 4432 131 1231
231 432 123 43432 131
23312 434 1231 2131 123
etc etc.Mein Vorgehen habe ich so geplant:
- Die richtige Reihenfolge vorgeben
- string nach 'CHANNELNAME =' lesen ab ersten ' (hochkomma) bis zu nächsten und substring dazwischen abspeichern, dan nach nächsten ' suchen und so weiter
- danach die IST-Reihefolge mit der SOLL-Reihenfolge vergleichen und die Daten einlesen und in richtiger Reihenefolge ausgebenMeine Probleme dabei sind, dass nicht weiss wie ich den string vernünftig und effizient zerlegen kann.
Es sind genau 42 Kanäle und ich will s vermeiden dazu hunderte Zeilen von Quelltext zu schreiben. Also wie löse ich das effizient?Ich hoffe ich konnte mich verständlch ausdrücken!
Dank im Voraus.
TechM
-
Lies einfach Stück für Stück ein und dann steck das jeweils in einen passenden Container.
Ansonsten gibt es das hier:
http://www.cplusplus.com/reference/string/string/Da findest du einen Haufen zu strings und auch STL Algorithmen sind sehr hilfreich:
http://www.cplusplus.com/reference/algorithm/
-
Jeden eingelesenen String kannst Du selbst zerlegen mit einer simplen Schleife über alle Zeichen und heraussuchen, was Du brauchst. Das wäre ANSI-C und ist sehr einfach.
Alles weitere - wie die geänderte Ausgabe in einer anderen Datei - ist dann Deine Sache.
-
danke leute, ich glaubs ich bekommsgebacken auch wen ich den quelltext niemanden zeigen sollte.

hat mich bisher 8 stunden gekostet, um mir ca. 10 stunden zu sparen und ich bin noch nicht fertig. das nenne ich effizienz
grüße
techm
-
TechM schrieb:
hat mich bisher 8 stunden gekostet, um mir ca. 10 stunden zu sparen und ich bin noch nicht fertig. das nenne ich effizienz

Willkommen in der Softwareentwicklung. Wo man gut mal einen Tag lang nach einem Klitzekleinen Fehler sucht.
Aber schau das mal von der anderen Seite an. Anstatt etwas stumpfsinniges zu machen, hast du dein Hinr gebraucht und hast nachher ein Programm, wo du das innerhalb von 30sec machen/lösen kannst. Z.B bekommst du noch mehr Daten und dann ist das ganz fix gemacht.
Ich habe mal dasselbe gemacht. Ich brauchte ein Bild von so einem Wurmloch. Und anstatt eines zu zeichnen, habe ich eine Simulation geschrieben, welche mir dann das Wurmloch beliebig anzeigen kann und ich die Kamera drehen/bewegen konnte. Dann noch fix einen Screenshot gemacht und fertig.
Wenn das mal nicht effizient ist.;)