c/ c++ binär einlesen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
HB3YYF

c/ c++ binär einlesen

Beitrag von HB3YYF » 24.07.2012 20:18:18

Hallo zusammen

Ich stehe gerade vor einem kleinen Problem.
Nachdem ich versucht habe eine Binärdatei einzulesen und im Ram abzulegen, meldet sich g++ mit dieser Meldung zurück:

Code: Alles auswählen

 error: aggregate ‘std::ifstream sourceFile’ has incomplete type and cannot be defined
Mein Quellcode:

Code: Alles auswählen

// Datei einlesen:

#include<iostream>
#include<istream>
using namespace std;

int main()
{
	int iFileLength;
	int iFileCount;
	iFileCount = 0;
	fstream sourceFile;
	sourceFile.open("downloadsetup.exe", ios::binary);
		
	// die länge bekommen:
	sourceFile.seekg (0, ios::end);	// Ans Ende der Datei springen ...
	iFileLength = sourceFile.tellg();	// ... die absolute Position ermitteln ...
	sourceFile.seekg (0, ios::beg);	// ... und nun wieder zurück
	
	int *caFileBuffer;
	caFileBuffer = new int[iFileLength];
	
	sourceFile.seekg(0, ios::beg);
	sourceFile.read(caFileBuffer, iFileLength);
	
	sourceFile.close();
	return 0;
}

Ich arbeite, wie solls anders sein, unter Debian 6 und nutze SciTe als Editor (IDE).
Kann mir jemand sagen, was ich falsch mache?

Besten Dank
HB3YYF

Gunman1982
Beiträge: 923
Registriert: 09.07.2008 11:50:57
Lizenz eigener Beiträge: MIT Lizenz

Re: c/ c++ binär einlesen

Beitrag von Gunman1982 » 24.07.2012 20:52:46

Fehlt wohl ein #include <fstream>.

Benutzeravatar
schorsch_76
Beiträge: 2601
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: c/ c++ binär einlesen

Beitrag von schorsch_76 » 24.07.2012 20:56:20

So mach ich das ...

Code: Alles auswählen

#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>

int main(int argc, char** argv)
{
 std::vector<unsigned char> InBuff; 

 std::ifstream In("Datei", ios_base::binary);  // oeffnen 
 In.unsetf(skipws);   // leerzeichen und /LF auch lesen 
 std::copy(std::istream_iterator<unsigned char>(In), 
          std::istream_iterator<unsigned char>(), 
          std::back_inserter(InBuff));   // ganze datei in den buffer 

 return 0;
}
Gruß
schorsch

HB3YYF

Re: c/ c++ binär einlesen

Beitrag von HB3YYF » 24.07.2012 22:24:43

Hallo

Vielen Dank für die Informationen. Leider bekomme ich das immer noch nicht ganz hin. Auch hier meldet sich g++ mit dem gleichen Fehler. Auch habe ich <fstream> eingebunden (Habe es wohl nicht ganz richtig kopiert).

Was ist denn an meinem Quellcode falsche? Ich bekomme den Fehler bei Zeile "27", das wäre

Code: Alles auswählen

sourceFile.read(caFileBuffer, iFileLength);
HB3YYF

Benutzeravatar
schorsch_76
Beiträge: 2601
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: c/ c++ binär einlesen

Beitrag von schorsch_76 » 25.07.2012 08:10:40

Wie hast du caFileBuffer deklariert und was willst du lesen? Was ist ein byte? Ist das ein int oder ein char? ;)

Gruß
schorsch

Antworten