с++ fstream считывает каждый второй байт с бинарного файла
Поток 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*)¤t_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();
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Смотрим:
while (file >> current_bite) {
file.read((char*)¤t_bite, sizeof(current_bite));
В первой строке считывание первого байта, во второй - второго. Потом опять в первой третьего, во второй четвертого...
Что написали - то и получается...