char aus datei in integer
-
Anfänger bräuchte mal wieder kurz eure Hilfe:
Gibts eine Möglichkeit, eine int Zahl in eine datei einzulesen(ofstream...) bzw auszulesen.
Beispiel: ich möchte den wert von pow(2,4) in math.txt schreiben und später darauf zurückgreifen und weiterrechnen.
-
bitte im forum suchen!
mfg
-
pflaumi schrieb:
Anfänger bräuchte mal wieder kurz eure Hilfe:
Gibts eine Möglichkeit, eine int Zahl in eine datei einzulesen(ofstream...) bzw auszulesen.
Beispiel: ich möchte den wert von pow(2,4) in math.txt schreiben und später darauf zurückgreifen und weiterrechnen.Nabend,
das kannst du so machen:
ifstream file("math.txt"); int i; file >> i;
mfg
v R
-
Eigentlich hast du dir schon die Antwor selber gegeben: ofstream/ifstream.
#include <fstream> #include <math.h> using namespace std; int main() { int x = pow(4,5); ofstream outfile ("math.txt"); outfile << x; }
Und wenn du nichts weiter an der Datei veränderst, bzw die dann immer noch nach dem gleichen Muster aufgebaut ist, kann du so die Zahlw ieder auslesen:
ifstream infile ("math.txt"); int x; infile >> x;
-
pflaumi schrieb:
Anfänger bräuchte mal wieder kurz eure Hilfe:
Gibts eine Möglichkeit, eine int Zahl in eine datei einzulesen(ofstream...) bzw auszulesen.
Beispiel: ich möchte den wert von pow(2,4) in math.txt schreiben und später darauf zurückgreifen und weiterrechnen.#include <windows.h> #include <math.h> // Oder welcher Header auch immer für pow() zuständig ist int WINAPI WinMain(HINSTANCE hinst,HINSTANCE phinst, LPSTR commline,int showstyle){ HANDLE filex=CreateFile("math.txt",GENERIC_READ|GENERIC_WRITE, NULL,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); ULONG writtenbytes; char* ResultOfPow=new char[11]; ZeroMemory(ResultOfPow,11); ltoa(pow(2,4),ResultOfPow,10); WriteFile(filex,ResultOfPow,11,&writtenbytes,NULL); // Nun steht das Ergebnis von pow(2,4) gut leserlich mit jedem Editor // in der Datei math.txt SetFilePointer(filex,0,0,FILE_BEGIN); // Damit wir auch am Dateianfang // mit dem auslesen beginnen delete[]ResultOfPow; // Um zu beweisen, dass wir dann tatsächlich den // Wert aus der Datei gelesen haben, und nicht // das Ergebnis von ltoa() ResultOfPow=new char[11]; ZeroMemory(ResultOfPow,11); ReadFile(filex,ResultOfPow,11,&writtenbytes,NULL); // Falls wir den numerischen Wert des Resultats von pow(2,4) benoetigen, // ist uns atol behilflich, da das Demoprogramm bald zu Ende ist, nehmen // wir einfach die Variable writtenbytes dafür her writtenbytes=atol(ResultOfPow); // Ansonsten koennen wir als Beweis der geglückten Schreib- und Lesefunktion // auch MessageBox verwenden MessageBox(NULL,ResultOfPow,"Die gespeicherte Zahl war:",NULL); CloseHandle(filex); return 0; }
Der Quellcode veranschaulicht ganz deutlich das Prinzip, das beim Speichern und
Lesen von Dateien dahintersteht. Außerdem haben wir auch dafür gesorgt, dass
der gespeicherte Wert auch leserlich in der .txt Datei gespeichert wurde,
wo wir ihn auch mit einem beliebigen Editor bestaunen können.
Hingegen gelangen numerische Werte über den Datenstrom ofstream in binärer Form in eine Datei, und sind als solche in einer .txt Datei nicht mehr als solche zu erkennen. Der Vorteil ist allerdings, dass ein long Wert dann auch wirklich immer nur 4 Byte groß ist, und sei es auch 1000000000 eine Milliarde (die im ANSI-Format doch immerhin 10 Byte belegt). Allerdings verschwenden dann auch kleinere Werte wie etwa '7' genauso viel Speicher (die für einen long Wert üblichen 4 Byte nämlich), wo die ANSI-Version (also die leserliche Version) mit einem einzigen Byte auskommt, und so gleicht sich das wieder aus.
-
Ich wuerde allerdings sagen, falsches Forum fuer den Code.
mfg
v R
-
virtuell Realisticer schrieb:
Ich wuerde allerdings sagen, falsches Forum fuer den Code.
mfg
v RViele Wege führ'n nach Rom. Das Aufzeigen mehrerer gleichwertiger Alternativen ist sicher keine schlechte Idee (es gibt nicht nur 'den wahren, einzigen,
unfehlbaren Standard-Weg', etwa 'nur ofstream ist korrekt, etwas anderes gibt es nicht', sondern tatsächlich gibt es ein gutes Dutzend gleichwertiger Alternativen, die man dem Fragesteller nicht unterschlagen sollte:))
-
Slencem schrieb:
virtuell Realisticer schrieb:
Ich wuerde allerdings sagen, falsches Forum fuer den Code.
mfg
v RViele Wege führ'n nach Rom. Das Aufzeigen mehrerer gleichwertiger Alternativen ist sicher keine schlechte Idee (es gibt nicht nur 'den wahren, einzigen,
unfehlbaren Standard-Weg', etwa 'nur ofstream ist korrekt, etwas anderes gibt es nicht', sondern tatsächlich gibt es ein gutes Dutzend gleichwertiger Alternativen, die man dem Fragesteller nicht unterschlagen sollte:))Ja, das viele Wege nach Rom fuehren ist klar. Aendert nichts am Namen des Forums-
teil, indem wir uns befinden.mfg
v R