?
Mr Xx schrieb:
Und nur so, er hat sogar zur Not seine Lösung zur Verfügung gestellt^^
#include <fstream>
#include <iostream>
using namespace std; // falls kein "using", muss "std::" vor "ofstream"
int main() {
float f=0.625, f1;
int i=-13, i1;
char ch;
//std::ofstream outFile;
ofstream outFile;
ifstream inFile;
//TextFile
outFile.open("C:\\scratch\\CPP.TXT");//Methode open in <fstream.h> nicht vorhanden
outFile << f << ' ' << i;
//myFile << endl; //Genau: Schreiben auf phys. Textdatei erfolgt mit endl
outFile.close(); //garantiert mit close
//BinFile
outFile.open("C:\\scratch\\CPP.BIN", ios::out | ios::binary); // OK
//outFile.open("C:\\scratch\\CPP.BIN"); // OK
outFile.write((char*)&f, sizeof(f));
outFile.write((char*)&i, sizeof(int));
outFile.close(); //Schreiben auf phys. Bin.Datei erst mit close
//TextFile: passende Variablen lesen
inFile.open("C:\\scratch\\CPP.TXT");
if(inFile.fail())
return 1; // exit falls Datei nicht existiert
inFile >> f1 >> i1; //eof erreicht! - siehe weiter
//inFile >> f1; // oder so
//inFile >> i1;
cout << "f1=" << f1 << endl;
cout << "i1=" << i1 << endl;
inFile.close();
//TextFile: einzelne Bytes lesen
inFile.open("C:\\scratch\\CPP.TXT");
//bei wiederholtem open kein automatischer Reset von eof(), good(), ...
inFile.clear(); //resetet eof(), good(), fail()
cout << endl << "Inhalt von CPP.TXT:" << endl;
while (!inFile.eof()) {
ch=inFile.get(); // 1 Zeichen lesen
cout << ch;
}
inFile.close();
//BinFile: passende Variablen lesen:
//inFile.open("C:\\scratch\\CPP.BIN", ios::in | ios::binary); // OK
inFile.open("C:\\scratch\\CPP.BIN"); // OK
inFile.clear(); //resetet eof(), good(), fail()
if(inFile.fail())
return 1; // exit falls Datei nicht existiert
inFile.clear();
inFile.read((char*)&f1, sizeof(f1));
inFile.read((char*)&i1, sizeof(int));
inFile.close();
//BinFile: einzelne Bytes lesen-also HexEditor simuleren
inFile.open("C:\\scratch\\CPP.BIN");
//bei wiederholtem open kein automatischer Reset von eof(), good(), ...
inFile.clear(); //resetet eof(), good(), fail(),...
cout << endl << endl << "Inhalt von CPP.BIN:" << endl;
while (!inFile.eof()) {
inFile.read((char*)&ch, sizeof(char));
cout << "0x" <<hex << (int)(ch & 0xff) << endl;
// hex ist Manipulator; konvertiert Ausgabe in Hex
// hex erwartet abwer eine int-Zahl (auch short,...)
// Um nur 1 Byte darzustellen (int hat 4 Bytes)
// wird der Bitoperator & eingesetzt
}
inFile.close();
return 0;
}
/*
//Loesung 1a: C++ classic
#include <fstream.h>
main ()
{
ofstream myFile1("C:\\scratch\\CPP.TXT");
// Öffnen (evtl. erst kreieren) der Datei
// "myFile.dat" zum Schreiben
//float f=0.625;
float f=0;
int i=-13;
// TextFile
//myFile1 << f << " " << i << endl;
myFile1.write((char*)&f,sizeof(f));
myFile1.close();
// Datei wieder schließen
// BinFile
ofstream myFile2("C:\\scratch\\CPP.BIN");
char buffer2[50];
int* pointer=(int*) buffer2;
pointer=-13;
myFile2.write(buffer2, 4);
//myFile2.write((char)&i, sizeof(int));
myFile2.close();
return 0;
}