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

SirForce

Alter Hase

  • »SirForce« ist der Autor dieses Themas

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

1

02.11.2007, 13:29

Ein- und Ausgabe von Dateien

Ich hätte mal wieder eine Frage.
Und zwar möchte ich ein (oder mehrere Wörter) speichern und in einer anderen Datei wieder ausgeben!

Mit Zahlen ist das ja soweit kein Problem, aber wenn ich das ganze mit Wörtern machen möchte, bekomme ich nur ein paar Zahlen raus (vermutlich der Binärcode).

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
ofstream Output ("Buffer.hsc", ios::binary);
Output.write ((char*) &Buffer, sizeof (Buffer));
           
Output.close ();

//...


ifstream Input ("Buffer.hsc", ios::binary);
Input.read ((char*) &Buffer, sizeof (Buffer));
    
Input.close ();


Ich denke ich muss das "binary" umändern, weil das ja so als Binär Code gespeichert wird, also in eine Textdatei schreiben, da habe ich aber keine Ahnung wie das gehen soll!

Im übrigen, bei Buffer handelt es ich um einen String der mit sprintf erstellt wurde!
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

02.11.2007, 13:38

Die Deklaration von Buffer wäre auch interessant. Ansonsten, wenn du eine Textdatei haben willst, brauchst du den binary flag nicht.
@D13_Dreinig

SirForce

Alter Hase

  • »SirForce« ist der Autor dieses Themas

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

3

02.11.2007, 13:46

Buffer habe ich ganz einfach als

C-/C++-Quelltext

1
char Buffer[30];
deklariert!

Ansonsten einfach nur das binary weglassen?!
Danke für die Hilfe! :D
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

02.11.2007, 13:48

Wenn du keine Binärdatei willst, dann lass binary weg. Wird dir aber womöglich nicht das Problem beseitigen. Schonmal geschaut was im Puffer steht, vor dem Schreiben?
@D13_Dreinig

SirForce

Alter Hase

  • »SirForce« ist der Autor dieses Themas

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

5

02.11.2007, 17:06

Ähm, wie heist denn das Flag für Textdateien?!

EDIT. Im Puffer - gut Frage.
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

02.11.2007, 17:16

Der Flag für Textdateien ist einfach nicht das Flag für Binärdateien setzen.
@D13_Dreinig

SirForce

Alter Hase

  • »SirForce« ist der Autor dieses Themas

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

7

02.11.2007, 18:14

Schon, aber wenn ich jetzt so

C-/C++-Quelltext

1
2
3
4
ofstream Output ("Buffer.hsc");
Output.write ((char*) &Buffer, sizeof (Buffer));
       
Output.close ();

schreibe, und dann einen Wort eingebe (z.B. cin.get (Eingabe, 29) -> Haus), kommt sobalt ich es wieder auslese nur "2293536" raus!


EDIT: Mir fällt gerade ein, das ich ja statt "Buffer.hsc" einfach "Buffer.txt" schreiben könnte!

EDIT die Zweite: Nö, geht auch nicht... kommt das gleiche Ergebniss raus!
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

02.11.2007, 18:37

Wie füllst du den Puffer denn?
@D13_Dreinig

9

02.11.2007, 18:46

C-/C++-Quelltext

1
2
3
std::ofstream file_stream("Buffer.hsc");
if (!file_stream) return 1;
file_stream << Buffer << std::endl;
und es steht da im Klartext :P Lesen dann mit std::getline, deswegen auch std::endl, damit am Ende der Zeile jeweils ein Newline-Zeichen steht :D

C-/C++-Quelltext

1
2
3
4
5
6
7
char buf[] ="Das ist mein TEXT";

std::ofstream file_stream("Buffer.hsc", std::ios::binary);
if (!file_stream) return 1;
const std::size_t length(std::strlen(buf) + 1);
file_stream.write(reinterpret_cast<const char*>(&length), sizeof(std::size_t));
file_stream.write(buf, length * sizeof(char));
... beim lesen dann halt das Gegenteil machen und nach dem einlesen von length einen char-Array mit der Größe anlegen ....
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

tnecniv

Treue Seele

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

10

02.11.2007, 19:42

naja, vielleicht weil du beim input stream das binaryflag wieder setzt?!?
keine ahnung...

EDIT: sry, hatte ne weile nicht reloaded
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Werbeanzeige