Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read hex values from a file using fstream in c++?

Tags:

c++

fstream

As the title says, how do you read hex values using fstream?

i have this code: (let's say we have "FF" in the file.)

fstream infile;
infile.open(filename, fstream::in|fstream::out|fstream::app);

int a;
infile >> std::hex;
infile >> a;
cout << hex << a;

but this does not give me any output instead of ff. I know there is a fscanf(fp, "%x", val) but I am curious is there any way to do this using stream library.

UPDATE:

My code was right all along, it turns out my error was I couldn't read "FFF" and put it in variable a,b,c like this

while (infile >> hex >> a >> b >> c)
  {
    cout << hex << a << b << c << "\n";
  }

Can somebody help me with this? do I have to separate every HEX values i want to read with space? because infile >> hex >> setw(1) doesn't work..

like image 542
ardiyu07 Avatar asked Feb 18 '11 11:02

ardiyu07


3 Answers

You can use the hex modifier

int n;
cin >> hex >> n;
like image 113
Bernd Elkemann Avatar answered Nov 12 '22 18:11

Bernd Elkemann


This works:

int main()
{
    const char *filename = "blah.txt";
    ifstream infile(filename, fstream::in);

    unsigned int a;
    infile >> hex >> a;
    cout << hex << a;
}
like image 37
Oliver Charlesworth Avatar answered Nov 12 '22 17:11

Oliver Charlesworth


You have to chain std::hex when reading, the same way you chain it for writing :

infile >> std::hex >> a;
like image 6
Nekresh Avatar answered Nov 12 '22 16:11

Nekresh