dateneinlesen/datenausgabe c_str
-
Hi Leute,
ich habe folgendes Problem:
Meine Daten werden zeilenweise (c_str) eingelesen. Bestimmte Elemente der Zeilen konnte ich bisher immer so aiswählen, das ich solange eine Ausgabe aktiviert habe, bis ein Leerzeichen kam. Das sieht dann so aus:
if (buffer[49]==' ') { cout<<" ;\n"; dataus<<" ;\n"; } else if (buffer[49]>=0 && buffer[50]==' ') { cout<<buffer[49]<<";"; dataus<<buffer[49]<<";"; }
Mit dieser Möglichkeit bekomme ich aber am Zeilenende Probleme da dort nach dem letzten Zeichen kein Leerzeichen mehr kommt.
Die einzulesenden Zeilen könnten so aussehen:
abc 783 78378 926
ao 3 987 3
taui 93 9287 83
..
..Wenn ich jetzt also die letzten Zeichen, also in der ersten Zeile die 926, der zweiten die 3, der dritten die 83 ausgeben möchte, weiss ich nicht, wie ich das amchen soll. Gibt es eine Funktion o.ä.? Z.B. ...right(c_str, [1,2,3]), also eine Möglichkeit die Elemente einer Zeile von rechts her auszugeben?
Danke für eure Hilfe!
Gruß
-
Du könntest abfragen, ob nach einem Zeichen ein Leerzeichen ODER ein Zeilenende bzw. ein vereinbartes Schluss-Byte kommt, um das Lesen zu beenden.
-
Hi Sir Gossi,
ja, das würde ich gerne so machen, da es ähnlich wie meine bisherige Syntax ausschauen würde, aber nach einer eingelesenen Zeile (...bei mir wird zeilenweise eingelesen), kommt nach dem letzten Zeichen kein weiteres Zeichen!
Wie definiere ich "Zeilenende"?Es muss was geben das etwa so aussieht:
if (buffer[49]>=0 && buffer[50]>=0 && buffer[51]=="Zeilenende") { cout<<buffer[49]<<buffer[50]<<";"; dataus<<buffer[49]<<buffer[50]<<";"; }
Hast du einen weiteren Tipp für mich?
Danke!!
-
Wenn du die Datei von deinem Programm aus speicherst, kannst du dir das Zeilen-Ende-Zeichen selbst aussuchen und hinter jede Zeile kleben, z.B. '\n'.
Wenn du die Datei in NOTEPAD geschrieben hast, kömmte es das gleiche Zeichen sein, nimm dir eine leere Datei, schreib nur ein Zeilenende hinein (einfach Ende) und ließ das Zeichen. Dann kennst du das Zeilenende-Zeichen!
Edit: Ich meinte: einfach Enter drücken, nicht "ende"!