.txt Dateien auslesen

Hi Leute, und zwar möchte ich ein Konsolenprogramm schreiben dass .txt Dateien ausliest und ausgibt.

Krieg ich auch soweit auf die Reihe, bis auf den Zeilenumbruch.

Wenn in der .txt steht:

„Das ist die erste Zeile
Und das die zweite!“

Dann wird in der Konsole ausgegeben:
„Das ist die erste ZeileUnd das die zweite!“

Also es wird der Zeilenumbruch einfach ignoriert, wie kann man das beheben??

Ich hab das vorerst einfach so gelöst in dem ich jede neue Zeile mit ’

Hi,

Dann wird in der Konsole ausgegeben:
„Das ist die erste ZeileUnd das die zweite!“

also vorab mal: Wenn dein Code nicht funktioniert und die Leute hier darueber schauen sollen, dann solltest du ihn auch hierein kopieren.

Funktioniert das Folgende bei dir, wenn du deine Eingabedatei „txt“ nennst?

#include 
#include 
#include 

int main()
{
 std::string line;
 std::ifstream in("txt");
 // Fehlerbehandlung fehlt hier
 for (int i = 1; std::getline(in,line); ++i)
 {
 std::cout 


Gruss
n.

Ja mein Code funktioniert ja eigentlich auch er tut ja das was er soll. Nur ist meine Lösung etwas umständlich. Aber ich werds mir merken.

Auf jeden Fall klappt das wie du es geschrieben hast, jetzt wird jede Zeile einzeln eingelesen und auch der Zeilenumbruch gemacht, alles wunderbar.

Herzlichsten Dank!!

Hallo Fagewurm,

Ja mein Code funktioniert ja eigentlich auch er tut ja das was
er soll. Nur ist meine Lösung etwas umständlich. Aber ich
werds mir merken.

Du hast dabei wohl schlichtweg vergessen das CRLF zu behandeln.

Dabei kommt es auch darauf an, wie du ein Datei öffnest.
Als Textdatei geöffnet lesen die meisten Funktionen nur den Text ein und das CRLF wird als Zeilenende-Markierung nicht mit eingelesen.
Wenn die Datei als Binary geöffnet wird, werden STeuerzeichen mit eingelesen, aber es gibt kein Zeilenweises Lesen mehr.

Das kleine Pogramm von norsemanna fügt das Zeilen Ende mit „std::endl“ wiede in die Ausgabe ein.

WO jetzt dein Fehler liegt, kann man dir nur sagen, wenn du deinen Sourcecode hier angibst!

MfG Peter(TOO)

So zu sagen.

Also hier der vorherige Code, ich weiß bei weitem nicht der beste, aber ich bin ja auch nur ein Anfänger. :wink:

Damit ihr den Zusammenhang versteht, im Programm geht es darum Lyrics, also Songtexte aus .txt Dateien auszulesen und auszugeben.

#define LYRICSIZE 4000

void LyricOpen (const std::string &Interpret, const std::string &Song)
{
char Lyric [LYRICSIZE];

std::ifstream Input („C:\Lyrics\“ + Interpret + „\“ + Song + „.txt“, std::ios::in);

if (Input.good ())
{
Input.read (Lyric, LYRICSIZE);

char *pLyric = Lyric;

LyricWrite (pLyric);
}
else
{
std::cout

Hallo Fragewurm,
Da fehlt nur eine Kleinigkeit :wink:

void LyricWrite (char *Lyric)
{
for (int i = 0; i
break;
}
default:
{
Lyric [i] = 0;
}
}
}
}

Nene da hast du etwas nicht verstanden.

Es wird jedes einzelne Zeichen aus dem char-Array einzeln geprüft und ausgegeben. Würde ich da ein „std::endl“ dazu schreiben, würde es jedes einzelne Zeichen in eine neue Zeile schreiben, was ich natürlich nicht will.

Die Lösung von „norsemanna“ war perfekt, konnte ich schnell in den vorhanden Code einbringen, machte die zweite Funktion überflüssig und ist schätz ich auch weniger rechenintensiv.

Aber vor allem kann ich jetzt jede .txt Datei ohne Probleme auslesen und ausgeben!
Und ohne dieser billigen ’

case ‚\n‘: std::cout
.