Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает бинарный режим, запись в файл 
V
    Опции темы
RinOSpro
Дата 27.7.2010, 10:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Есть проблема... Хочу записать в файл в бинарном режиме а получается в текстовом... вот код:

Код

struct Point
{
    int X;
    int Y;

    friend ofstream& operator << (ofstream& s, const Point &p)
    {
        s << p.X << p.Y;

        return s;
    }
};

.......

    ofstream ofile(filename, ios::binary); 
    ofile << fpoint;


Подскажите плиз, как правильно...?

  Вверх
djamshud
Дата 27.7.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



fwrite :)

И никогда не будет таких проблем.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
RinOSpro
Дата 27.7.2010, 10:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











хотелось бы с помощью оператора <<, можно с помощью него?
  Вверх
Abyx
Дата 27.7.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 5
Всего: 10



RinOSpro, в ofstream нет.
PM MAIL   Вверх
RinOSpro
Дата 27.7.2010, 10:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Abyx @  27.7.2010,  10:45 Найти цитируемый пост)
 в ofstream нет.


А с чем да?
  Вверх
rudvil
Дата 27.7.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 1
Всего: 3



Тут есть хороший пример.
--------------------
xor
PM MAIL Skype   Вверх
RinOSpro
Дата 27.7.2010, 11:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(rudvil @  27.7.2010,  10:57 Найти цитируемый пост)
Тут есть хороший пример


Там опять же предложено записывать с помощью file.write ((
  Вверх
rudvil
Дата 27.7.2010, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 1
Всего: 3



Цитата(RinOSpro @ 27.7.2010,  11:03)
Цитата(rudvil @  27.7.2010,  10:57 Найти цитируемый пост)
Тут есть хороший пример


Там опять же предложено записывать с помощью file.write ((

Можно так, если уж очень хочется через <<
Код
#include <fstream>
#include <iostream>

/*
 * 
 */

struct binary {

  binary() {
    this->num_ = 0.0;
  }

  binary(double num) {
    this->num_ = num;
  }

  ~binary() {
  }
  double num_;

  friend std::ofstream & operator <<(std::ofstream& s, binary & b) {
    s.write(reinterpret_cast<char *>(&b), sizeof (binary));
    return s;
  }
};

int main(int argc, char* argv[]) {
  // Запись
  {
    binary b(3.14);
    std::ofstream f("C:\\Users\\rudvil\\test.dat", std::ios::binary);
    f << b;
    f.close();
  }
  // Чтение
  {
    binary b;
    std::ifstream f("C:\\Users\\rudvil\\test.dat", std::ios::binary);
    f.read(reinterpret_cast<char *>(&b), sizeof (binary));
    f.close();
    std::cout << b.num_ << "\n";
  }
  std::cout << "\n";
  return 0;
}


--------------------
xor
PM MAIL Skype   Вверх
bsa
Дата 27.7.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(rudvil @  27.7.2010,  12:36 Найти цитируемый пост)
Можно так, если уж очень хочется через <<

Но не нужно!
Цитата(RinOSpro @  27.7.2010,  11:44 Найти цитируемый пост)
хотелось бы с помощью оператора <<, можно с помощью него? 
Мало ли что тебе хочется. Положено это делать через write. И поверь мне, не просто так. Код читается значительно чаще, чем пишется. И если ты будешь писать бинарные данные через <<, то читающий твой код будет в ступоре, так как у него по коду форматированная запись, а по факту двоичная. Таким образом, ты отнимешь у него время на то, чтобы понять, как это у тебя работает.

PM   Вверх
RinOSpro
Дата 27.7.2010, 13:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сделал через write, жаль что стандартно нельзя писать через <<

Всем спасибо!
  Вверх
bsa
Дата 27.7.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(RinOSpro @  27.7.2010,  14:44 Найти цитируемый пост)
жаль что стандартно нельзя писать через <<

Как раз не жаль. Потом поймешь.  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0994 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.