ifstream не читает существующий в файле байт `0a` - PullRequest
1 голос
/ 20 мая 2019

Я хочу прочитать первые 7 байтов моего файла. это данные моего файла:

42 4d b6 fc 0a 00 00

Я использую этот код для этого:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;


int main()
{
    ifstream r("TestFile.abc", ios::binary);
    unsigned char info[7];
    for(int i = 0 ; i < 7; i++){
        r >> info[i];
    }

    for(int i = 0 ; i < 7; i++){
      std::stringstream ss;
      ss << std::hex << (int) info[i]; // int decimal_value
      std::string res ( ss.str() );
      cout << i << setw(10) << info[i] << setw(10) << res << endl;
    }



   return 0;;
}

а это вывод:

0         B        42
1         M        4d
2         ╢        b6
3         ⁿ        fc
4                   0
5                   0
6                   0

Process returned 0 (0x0)   execution time : 0.032 s
Press any key to continue.

Почему 0a байт заменен на 0?

1 Ответ

2 голосов
/ 20 мая 2019

>> пропускает пробел, 0a - символ пробела.Попробуйте это

info[i] = r.get();

get читает один байт, ничего не пропуская (исключая возможные преобразования конца строки, но вы уже учли это, используя ios::binary)

...