Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MGBeginner

Frischling

  • »MGBeginner« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

1

04.01.2013, 01:43

ofstream-Instanz + <<-Operator + std::endl;

Hallo liebes Forum,
habe gerade bei folgendem Code ein kleines Problem gehabt :

C-/C++-Quelltext

1
2
3
4
5
6
std::ofstream OutputFile;
OutputFile.open("heraus1.txt",std::ofstream::binary);

OutputFile << "--------------------------------" << std::endl;

OutputFile.close();


In der entsprechenden Text-Datei wird der Zeilenumbruch gemacht,
danach folgen aber 1-2 kryptische Zeichen in der neuen Zeile, bevor
es mit weiteren Ausgaben weitergeht. Ich habe die Zeile dann mal
geändert in

C-/C++-Quelltext

1
OutputFile << "--------------------------------" << (char)0x0D << (char)0x0A;


und es klappt wie es soll. Liegt das eventuell am std::ofstream::binary
beim Aufruf von open() ? Muss ich da was anderes angeben oder funktioniert
std::endl mit diesem File-Stream nicht ?


Ihr wisst sicher weiter :thumbup:

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

04.01.2013, 01:52

.txt Files sind eigentlich nie binär, sondern text-basierend...

MGBeginner

Frischling

  • »MGBeginner« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

3

04.01.2013, 02:02

Stimmt ja eigentlich, also müsste es nur so aussehen

C-/C++-Quelltext

1
OutputFile.open("heraus1.txt",ios::out);


Also das binary einfach weglasen, dann werden die
Ausgaben textbasiert interpretiert, richtig :?:

Horni

Frischling

Beiträge: 21

Beruf: Student MB

  • Private Nachricht senden

4

04.01.2013, 02:39

Zitat


C-/C++-Quelltext

1
2
3
4
5
6
std::ofstream OutputFile;
OutputFile.open("heraus1.txt",std::ofstream::binary);

OutputFile << "--------------------------------" << std::endl;

OutputFile.close();


ich hab den code mal abkopiert und bei mir schreibt er nur das "--------------------------------" o.O
MS Visual Studio 2010 und Qt Creator (ja selber Compiler aber Qt Creator hat glaub ich die STL selbst nochmal falls es da Unterschiede geben könnte :P )
Stimmt ja eigentlich, also müsste es nur so aussehen

C-/C++-Quelltext

1
OutputFile.open("heraus1.txt",ios::out);


Also das binary einfach weglasen, dann werden die
Ausgaben textbasiert interpretiert, richtig :?:
Ja und wenn du die Klasse ofstream verwendest, reicht es auch nur den Dateinamen zu schreiben.
Und du kannst das ofstream-Objekt auch mit dem Konstruktor an die Datei binden also


C-/C++-Quelltext

1
std::ofstream OutputFile("heraus.txt");

MGBeginner

Frischling

  • »MGBeginner« ist der Autor dieses Themas

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

5

04.01.2013, 02:51

hehe, es läuft so jetzt auch mit std::endl und habe jetzt 1 Zeile Code weniger,
vielen Dank ! :thumbsup:

6

05.01.2013, 17:28

Das Problem liegt hieran:
http://de.wikipedia.org/wiki/Zeilenumbruch#ASCII

Es gibt verschiedene Standards für Zeilenumbrüche. Schlechte Texteditoren verstehen das nicht. Vermutlich wurde in deine Datei die Version mit 2 Zeichen geschrieben, das Programm mit dem du die Datei betrachtet hast, hat aber nur eines davon erkannt und das andere als Sonderzeichen ausgegeben.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige