Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Byteweise in Datei schreiben (mit streams!)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.03.2005, 15:07 Uhr
MichaelK.



Hi

ich möchte gerne den Inhalt einer Datei byteweise lesen und schreiben. kann ich das mit streams machen?
ich hab in der hilfe mal unter filestreams nachgeschaut und ofstream und ifstream gefunden, die mann dann als binary öffnen kann (iso_base::binary). nur kommt bei mir dann ein standard-textfile raus.

kennt jemand eine möglichkeit mit streams byteweise zu lesen / zu schreiben? möchte ungern FILE verwenden, weil mir dann so lustige Möglichkeiten wie
Code:
ff.get(ch);
ff.put(ch);
ff.fail();
ff.good();

usw nicht zur Verfügung stehen.

Bin für jeden Tipp dankbar
Gruß MichaelK.

Dieser Post wurde am 23.03.2005 um 15:07 Uhr von MichaelK. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.03.2005, 15:16 Uhr
typecast
aka loddab
(Operator)


->
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.03.2005, 15:19 Uhr
typecast
aka loddab
(Operator)


Na ja. Wenn du eine Textdatei byteweise ausliest, dann steht da auch nur Text drin.
Ich versteh nicht ganz, was dein Problem ist. Koenntest du das mal genauer erklaeren?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.03.2005, 15:59 Uhr
MichaelK.




Zitat von typecast:
Na ja. Wenn du eine Textdatei byteweise ausliest, dann steht da auch nur Text drin.
Ich versteh nicht ganz, was dein Problem ist. Koenntest du das mal genauer erklaeren?


Ok, ich will folgendes: in meiner Datei sollen nur Zahlen reingeschrieben werden. wenn ich bisher die Zahlen mit diesem Code reingeschrieben habe (hab nirgends was anderes gefunden, für File I/O mir streams)

Code:
ff >> i >> j >> k >> endl;


standen da auch wirklich Zahlen drin, wie in einem normalen TextFile. was ich aber will ist, dass die Zahlen i,j,k als Bytewerte aufgefasst werden und diese Bytes dann in die Datei rein geschrieben werden.

wenn i 255 ist, soll im File nicht 255 (als Zeichenkette) sondern das Ascii-Zeichen 255 drin stehen. das gleiche natürlich auch für j und k. (im Hex-Editor würde dann an dieser stelle der Eintrag FF zu sehen sein)

ich hoffe mal, dass ich mein problem jetzt einigermaßen verständlich geschildert.

Gruß MichaelK.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.03.2005, 19:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


geht ein

C++:
ff.put(i);
ff.put(j);
ff.put(k);



nicht?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.03.2005, 19:58 Uhr
MichaelK.



Im Moment funktioniert garnichts mehr

Vielleicht stehe ich nur auf dem Schlauch, aber ich kann doch eine Datei so erzeugen

Code:
ofstream File;
File.open("C:\testfile.dat",ios_base::binary);
...
File.close();



das geht bei mir aber nicht. Von einem Freund habe ich erfahren, dass es auch ohne File.open(...) gehen müsste, also so

Code:
#include <iostream>
#include <fstream>

using namespace std;

void main()
{
    int i=255, j=32, k=80;        /*Hexcodes: FF, 20, 50*/
    ofstream File("c:\testfile.txt", ios_base::binary);
    File.put(i);
    File.put(j);
    File.put(k);
    File.close();    
}

aber auch hier wird keine datei "c: \testfile.txt" erzeugt. warum nicht?

Gruß MichaelK.

Dieser Post wurde am 23.03.2005 um 19:59 Uhr von MichaelK. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.03.2005, 20:04 Uhr
0xdeadbeef
Gott
(Operator)


Weil du den backslash escapen musst:

C++:
ofstream File("c:\\testfile.txt", ios_base::binary);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 23.03.2005 um 20:04 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.03.2005, 20:06 Uhr
MichaelK.



Yuhuu!
thx @ all. jetzt funzt es (zumindest das schreiben )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: