Zeilenende abfragen
-
Hallo,
ich möchte eine Datei einlese, die ungefähr wie folgt aufgebaut ist:
58952795; aghohaihgoi; wt205797502
789579852; gdaihoigaho; giahzoihrh
usw.Wenn ich nun (in C++) zeichenweise mit
get(c)
einlese kann ich ja bei jedem Zeichen abfragen, ob es sich um ein Semikolon handelt
if(c == ';')
und somit mit Hilfe dieses Trennzeichens die unterschiedlichen Komponenten erhalten. Wie kann ich dann jedoch abfragen, ob das Zeilenende bereits erreicht ist? Gibt es da eine ähnliche Variante? Etwas wie
if(c == '???')
?
Viele Grüße,
sunnymay
-
if (c == '\n') // Zeilenende
-
Vor dem '\n' kann aber auch noch ein '\r' kommen, welches man nicht als "normales" Zeichen mit einlesen sollte.
Da du ja C++ programmierst, wären die STL-Streams aber angebrachter. Sie sind auf jeden Fall um einiges komfortabler:string line; ifstream fin( "/tmp/data.txt" ); while ( fin >> line ) { // ... Mache irgendwas mit der Zeile }
Wie du die Zeile (bzw den String) entsprechend nach den Semikola* splitten kannst, müssen dir die STL-Experten verraten, gibts aber bestimmt nen Einzeiler für
*Heißt es nicht Semikola? Der Firefox unterkringelt es mir und schlägt "Semikolons" vor
-
Badestrand schrieb:
Vor dem '\n' kann aber auch noch ein '\r' kommen, welches man nicht als "normales" Zeichen mit einlesen sollte.
Wobei dazugesagt werden sollte, daß sowohl IOStreams als auch C's FILE-Funktionen die Zeilenende-Marke des Systems interpretieren und als '\n' weitergeben (zumindest solange du die Dateien im Text-Modus betrachtest).
Da du ja C++ programmierst, wären die STL-Streams aber angebrachter. Sie sind auf jeden Fall um einiges komfortabler:
string line; ifstream fin( "/tmp/data.txt" ); while ( fin >> line ) { // ... Mache irgendwas mit der Zeile }
Wenn du Zeilen einlesen willst, nimm lieber getline() - op>> liest Wörter ein (getrennt durch Whitespaces).
-
Oh, na gut, dann halt so