реклама на сайте
подробности

 
 
> ios_base::binary, ввод-вывод двоичных данных
demiurg_spb
сообщение Jan 20 2009, 14:27
Сообщение #1


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Подскажите пожалуйста в чём грабли.
Приведённая ниже программка не работает,
а если я сам собираю 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;
}


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Jan 21 2009, 08:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Операторы << и >> осуществляют форматированный обмен с файлом (т.е. в виде текста), вне зависимости от режима открытия файла. А ничего не читает оно потому, что бинарные данные ну никак на текстовое представление float не похожи.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 21 2009, 09:11
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Понятно. Я думал иначе.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 11:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016