I am writing a C++ program to read an exe file. I wrote it and I test it on a text file instead of exe file. it was true.
when I test it with an exe file I understand that my exe file have 0x00 value in it (not at its end). so my while loop stop before end of file because I used:
class A{
private:
ifstream myFile;
void Read(char *filename)
};
void A::Read(char *str)
{
myFile.open(str,ios::binary);
while (!myFile.eof())
{
InputFile.get(ch);
myString.push_back(ch);
}
}
what should I do? if I should use size of the file, how can i get it?
Only a hunch here, but my suspicion is that you’re actually reading the whole file correctly, but measuring it wrong.
File reading (with binary mode) won’t stop on a 0-byte, but there are several string related methods that will.
For example, you can’t measure the size of a binary “blob” using strlen(), you can’t copy it using strcpy().
Without seeing the actual way you’re storing and measuring the data, it’s hard to see where things go wrong, but I strongly suspect that you’re actually reading the whole file correctly if you’re using binary mode.