Datei einlesen

Code:
        ifstream in("test.jpg", ios::in | ios::binary);
    ofstream out("test.hex");
    
    if (!in.is_open() || !out.is_open()) return 1;
	
    out << hex << setfill('0');
    
  char c;

  while (out && in.get(c)) {
    out << setw(2) << static_cast<int>(c);
  }

  out.close();

also das funktioniert jetzt auch nicht mehr ...
 
Mist. Man sollte eben nich nochmal was am Code verändern wenn man was ganz anderes getestet hat...

Mach mal aus dem ostringstream einen istringstream.

Gruß und sorry!
 
Code:
#include <fstream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{


        ifstream in("test.jpg", ios::in | ios::binary);
    ofstream out("test.hex");
    
    if (!in.is_open() || !out.is_open()) return 1;
	
    out << hex << setfill('0');
    
    while (!in.eof()) {
        out << setw(2) << in.get();
    }


	ifstream in2("test.hex", ios::in);
  ofstream out2("test1.jpg", ios::binary | ios::out );

  if (!in2.is_open() || !out2.is_open() ) return 1;

  char c1, c2;

  while (out2 && in2 >> c1 >> c2) {
    int i;
    istringstream ss (string(1, c1) + c2);

    if (ss >> hex >> i) {
      out2.put(i);
    } else return 2;
  }

  return 0;
}

so das funktioniert aber das :
Code:
  while (out && in.get(c)) {
    out << setw(2) << static_cast<int>(c);
  }

 out.close();

tut bei mir auch nicht die datei ist von 300 kb nach deiner version der while schleife auf 900 kb vergrößert worden und der Hex Code war auch falsch ...


//edit kennt ihr ne schöne Internet seite wo man das alles nachlesen kann mit ifstream und outstream und was die zeichen << und >> bedeuten kenn die ja nur von cout << und cin << ...

LG ...
 
Zuletzt bearbeitet:
Also ich sehe nicht wo da jetzt der Fehler liegt und warum das nicht funktionieren sollte.

Zum Testen versuch mal vor der while-Schleife folgendes (dazu den iostream Header einbinden)
Code:
if (!out) {
  cerr << "Fehlerzustand" << endl;
  out.clear ();
}

Funktioniert es damit bzw. druckt er da was auf die Standard-Error Ausgabe?
 
2fast4you87 hat gesagt.:
tut bei mir auch nicht die datei ist von 300 kb nach deiner version der while schleife auf 900 kb vergrößert worden und der Hex Code war auch falsch ...
Welche Dateien meinst du denn jetzt? Bei mir ist, wenn die test.jpg Datei 300kB groß ist, die test.hex Datei 600kB groß. Bei dir ist die Datei test1.jpg dann auf einmal 900kB groß? :confused:

2fast4you87 hat gesagt.:
//edit kennt ihr ne schöne Internet seite wo man das alles nachlesen kann mit ifstream und outstream und was die zeichen << und >> bedeuten kenn die ja nur von cout << und cin << ...
Also im Grunde bedeuten die << und >> bei allen Streams genau dasselbe, man kann diese Operatoren für eigene Typen allerdings überladen.

Ich such meistens entweder bei Google oder für die iostreams hier: http://www.cplusplus.com/ref/iostream/index.html
 
also mit deiner schleife wird meine test.hex von 300 kb auf einmal 900 kb und der hex code ist falsch geschrieben und die datei kann man dann nciht mehr ausführe, sprich die test1.jpg
 
2fast4you87 hat gesagt.:
Fehlerzustand
Press any key to continue << das macht er da .
Aha. Das ist ja schonmal interessant. D.h. der Ausgabe Stream befindet sich bereits vor Eintritt in die Schleife in einem Fehlerzustand. Ist bloss die Frage wieso?

Hat sich denn an der Situation was verändert (Dateigröße etc.)?

Was verwendest du denn eigentlich für einen Compiler?
 

Neue Beiträge

Zurück