Dateitypen zum abspeichern
-
Hi Leute ich wollte mal fragen als was für dateitypen ich werte von variablen abspeichern kann... wenn ich sie als txt abspeicher dann könnte ja jeder die werte verändern!
Thx Straightflush
-
Der Dateityp hat rein gar nix mit dem Format zu tun.
Gruß
-
Mit anderen Worten: "Die Dateiendung ist nicht der Dateityp."
-
ok kapiert aber unter was für endungen kann ich nun z.b. werte für variablen abspeichern?
-
Hier ein Beispiel, wie man eine .txt, die gar keine .txt ist, schreibt und liest:
#include <iostream> #include <fstream> using namespace std; typedef unsigned char byte; template<typename T> void schreibAlsBytes(ostream &wegdamit, T &ding) { byte *alsBytes = reinterpret_cast<byte *>(&ding); for(unsigned int i=0; i<sizeof(T); ++i) wegdamit << alsBytes[i]; } template<typename T> void liesAusBytes(T &ding, istream &herdamit) { byte alsBytes[sizeof(T)]; for(unsigned int i=0; i<sizeof(T); ++i) herdamit >> alsBytes[i]; ding = *reinterpret_cast<T *>(alsBytes); } int main() { int i = 1234567890; ofstream ausgabe("test.txt"); schreibAlsBytes(ausgabe, i); ausgabe.close(); int j; ifstream eingabe("test.txt"); liesAusBytes(j, eingabe); eingabe.close(); cout << j << endl; cin.get(); }
-
das umkopieren beim lesen aus dem stream (deserialisieren) ist natürlich nicht nötig. so kann man direkt in das ding lesen:
template<typename T> void liesAusBytes(T &ding, istream &herdamit) { byte *alsBytes = reinterpret_cast<byte *>(&ding); for(unsigned int i=0; i<sizeof(T); ++i) herdamit >> alsBytes[i]; }
-
und wie speichere ich jetzt zum beispiel nen interger wert in ner dll???
-
ifstream eingabe("beschiss.dll");
-
Beschiss schrieb:
ifstream eingabe("beschiss.dll");LOL :D! Absolut GEIL!
-
Das
schorsch code schrieb:
(ostream &wegdamit, T &ding)war auch nicht schlecht, auch wenn ich evtl die Bezeichner vertauscht hätte, denn es soll ja nicht der Stream weg sondern das andere oO