Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ios_base::binary
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
demiurg_spb
Подскажите пожалуйста в чём грабли.
Приведённая ниже программка не работает,
а если я сам собираю float по байтику через bin_file.get(ch), или через bin_file.readsome(var,sizeof(float)) то всё хорошо.
Такое впечатление, что текущая позиция чтения не инкрементируется...
Может надо как-то задать ширину выравнивая или ещё чего.
Спасибо!

Код
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <conio>

using namespace std;

int main(int argc, char* argv[])
{
    fstream bin_file(argv[1],  ios_base::in  | ios_base::binary);

    if (bin_file==NULL)
    {
        cout << "Can't open input file!" << endl;
        return -1;
    }

    for (int i=0; i<8; ++i)
    {
        float k1;

        bin_file >> k1;

        cout << "k1 = "  << k1 << endl;
    }

    bin_file.close();
    cout << "Press any key..." << endl;
    getch();
    return 0;
}
XVR
Операторы << и >> осуществляют форматированный обмен с файлом (т.е. в виде текста), вне зависимости от режима открытия файла. А ничего не читает оно потому, что бинарные данные ну никак на текстовое представление float не похожи.
demiurg_spb
Понятно. Я думал иначе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.