hell-student
Lieutenant
- Registriert
- Nov. 2007
- Beiträge
- 671
Hallo Zusammen,
Ich bräuchte etwas Hilfe. Bin gerade dabei einen Parser zu schreiben um eine OpenInventor, also .iv-Datei zu bearbeiten. Wer OI nicht kennt kein Problem. Es geht darum, dass ich in einer Datei (Textdatei) nach von mir bestimmten Schlüsselwörtern suche, welche ich zuvor eingefügt habe.
Beispiel:
Nun gibt es mehrere dieser Schüsselwörter (# l1_s1_t1, # l1_s1_t2 usw). Ich habe die darum eingefügt, um zu signalisieren, dass die nächste Zeile wichtig ist. Nun möchte ich gerne die 100 bei translation in Zeile 5 in eine andere Zahl, zb. 200 ändern.
Ich gehe so vor, dass ich per ifstream die Datei öffne und Zeile pro Zeile lese. Ist diese wie oben markiert folgt meine Parserfunktion (mit isdigit und die Nullen weg, da ich ja nur die 100 ersetzen möchte). Meine Problem ist dabei, wie ich nun das ganze in der Datei ändere. Ich möchte eigentlich direkt in der Datei die 100 durch eine 200 z.b ändern, bekomme das aber nicht hin. Ich dachte mir dann, dass ich einfach eine andere Datei erzeuge, in die ich alle Zeilen kopiere, welche ich nicht ändern möchte und nur die Zeilen modifiert in die neue Datei speichere, die ich ändern möchte. Dabei hab ich aber das Problem, dass ich nur eine Datei haben möchte. Kann ich eine Datei öffnen und mit getline oder etwas anderen direkt in der Datei modifizieren, d.h nur die Zeile die mir wichtig ist? Falls Fragen sind, einfach stellen
Ich bräuchte etwas Hilfe. Bin gerade dabei einen Parser zu schreiben um eine OpenInventor, also .iv-Datei zu bearbeiten. Wer OI nicht kennt kein Problem. Es geht darum, dass ich in einer Datei (Textdatei) nach von mir bestimmten Schlüsselwörtern suche, welche ich zuvor eingefügt habe.
Beispiel:
Code:
Transform {
rotation 1 0 0 1.5707
# l1_s1_t1
translation 0 0 100
}
Nun gibt es mehrere dieser Schüsselwörter (# l1_s1_t1, # l1_s1_t2 usw). Ich habe die darum eingefügt, um zu signalisieren, dass die nächste Zeile wichtig ist. Nun möchte ich gerne die 100 bei translation in Zeile 5 in eine andere Zahl, zb. 200 ändern.
Ich gehe so vor, dass ich per ifstream die Datei öffne und Zeile pro Zeile lese. Ist diese wie oben markiert folgt meine Parserfunktion (mit isdigit und die Nullen weg, da ich ja nur die 100 ersetzen möchte). Meine Problem ist dabei, wie ich nun das ganze in der Datei ändere. Ich möchte eigentlich direkt in der Datei die 100 durch eine 200 z.b ändern, bekomme das aber nicht hin. Ich dachte mir dann, dass ich einfach eine andere Datei erzeuge, in die ich alle Zeilen kopiere, welche ich nicht ändern möchte und nur die Zeilen modifiert in die neue Datei speichere, die ich ändern möchte. Dabei hab ich aber das Problem, dass ich nur eine Datei haben möchte. Kann ich eine Datei öffnen und mit getline oder etwas anderen direkt in der Datei modifizieren, d.h nur die Zeile die mir wichtig ist? Falls Fragen sind, einfach stellen