Как прочитать шестнадцатеричные значения из файла, используя fstream в C ++? - PullRequest
9 голосов
/ 18 февраля 2011

Как видно из заголовка, как вы читаете шестнадцатеричные значения, используя fstream?

У меня есть этот код: (скажем, у нас есть "FF" в файле.)

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

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

но это не дает мне никакого вывода вместо ff.Я знаю, что есть fscanf(fp, "%x", val), но мне любопытно, есть ли способ сделать это, используя потоковую библиотеку.

ОБНОВЛЕНИЕ :

Мой код всегда был прав,оказывается, моя ошибка была в том, что я не мог прочитать "FFF" и поместить ее в переменную a, b, c следующим образом

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

Может кто-нибудь помочь мне с этим?я должен отделить все значения HEX, которые я хочу прочитать с пробелом?потому что infile >> hex >> setw(1) не работает ..

Ответы [ 4 ]

10 голосов
/ 18 февраля 2011

Вы можете использовать шестнадцатеричный модификатор

int n;
cin >> hex >> n;
6 голосов
/ 18 февраля 2011

Это работает:

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

    unsigned int a;
    infile >> hex >> a;
    cout << hex << a;
}
6 голосов
/ 18 февраля 2011

При чтении вы должны соединить std::hex так же, как вы записали:

infile >> std::hex >> a;
0 голосов
/ 17 апреля 2017

Также убедитесь, что ваш входной файл написан с использованием шестнадцатеричного редактора, а не обычного текстового редактора.В противном случае файл foo.txt, содержащий символ «a», будет читаться как 0x61 и печататься как 0x61 вместо 0xa.Хороший редактор Hex для Linux - "Благослови".

...