с++ fstream считывает каждый второй байт с бинарного файла

Рейтинг: 0Ответов: 1Опубликовано: 28.01.2023

Поток fstream почему-то считывает только каждый второй байт с бинарного файла. Почему так происходит?

std::ifstream file("../data/data.BIT", std::ifstream::in | std::ifstream::binary);
    unsigned char current_bite;
    const int number_of_bits = 8;
    int step = 0; 
    while (file >> current_bite) {  
        file.read((char*)&current_bite, sizeof(current_bite));
        std::bitset<8>buffer(current_bite);
        for (int i = 0; i < number_of_bits; ++i) {
            bit_buffer.emplace_back(buffer[i]);
            std::cout << buffer[i] << ' ';
        }
        std::cout << "byte number = " << step <<'\n';
        step++;
        if (step == 39) {
            break;
        }
    }
    file.close();
    std::cout << bit_buffer.size();

Ответы

▲ 3Принят

Смотрим:

while (file >> current_bite) {  
    file.read((char*)&current_bite, sizeof(current_bite));

В первой строке считывание первого байта, во второй - второго. Потом опять в первой третьего, во второй четвертого...

Что написали - то и получается...