Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
#1

Как открыть файл для чтения в БИНАРНОМ режиме? - C++

12.11.2010, 23:34. Просмотров 2656. Ответов 3
Метки нет (Все метки)

Друзья! Файл, который надо открыть БИНАРНЫЙ, в нём два байта. Содержание файла
C++
1
33 20 00 00
имя "input"

Вот по логике вещей пра должна его в бинарном режиме открыть и число 33 20 записать в переме6нную x

Как она это число будет трактовать- дело второе уже. НУ раз это число типа int и учитывая, что 33 и 20 это шестнадцатеричные числа, тогда наверное число будет 00002033h или по-простому 8752

Но нет же она упорно видит в этих четыпёх байтах цифру 3 (первый байт), а оставшиеся три игнорирует. Хотя такое поведение, как я понимаю может быть только если файл открыт в текстовом режиме. Но я открываю в бинарном.

В С сделал бы без проблем как мне надо. Я там на крайняк считал бы файл посимвольно в нужную ячейку и получил бы нужное число. А вот здесь трабла какая-то прямо режимом открытия.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
 
int main () {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 ifstream in ("input", ios::in|ios::binary);
 
 if (!in) {
  cout<< "ошибка открытия файла"<<endl;
  getchar ();
  exit (1);
 }
 
 int x= 0;
 
 in>>x; 
 
  printf ("%x\n%d\n", x, x);
  cout<<x<<endl;; 
 
 getchar (); 
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2010, 23:34     Как открыть файл для чтения в БИНАРНОМ режиме?
Посмотрите здесь:

C++ Как удалить файл только для чтения?
Как передать файл в функцию для записи/чтения (разные функции) C++
Как открыть файл одновременно для чтения и для записи? C++
Запись char в бинарном режиме C++
C++ Запись в файл в бинарном режиме
C++ Прочитать файл в бинарном режиме с записью результата в string
Как прочитать файл в бинарном режиме по 32 байта C++
C++ Не удаётся открыть файл в бинарном режиме
Как создать один файл для чтения и записи одновременно? C++
C++ Не может открыть файл для чтения
Файл: Открыть файл в режиме «а+», внести изменения, характеризующие этот режим. C++
C++ Запись в бинарный файл в бинарном режиме: будут ли числа записаны в двоичной системе счисления?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
12.11.2010, 23:42     Как открыть файл для чтения в БИНАРНОМ режиме? #2
А так?
C++
1
in.read(reinterpret_cast<char *>(&x), sizeof(x));
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
12.11.2010, 23:49  [ТС]     Как открыть файл для чтения в БИНАРНОМ режиме? #3
В принципе число из файла я по-любому считаю Но в том-то и дело, что надо не по-любому, а с помощью конструктора объекта int. У меня в книге написано:

Консструкторы с параметрами создают объект существующего класса, открывают файл с указанным именем и связывают файл с объектом.

И вот такой синтаксис:
C++
1
ifstream (const char* name, int mode= ios::in)
Вот его и хотелось бы придерживаться.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.11.2010, 23:52     Как открыть файл для чтения в БИНАРНОМ режиме? #4
C++
1
ifstream in("input", ios::binary);
C++
1
in.read()
Yandex
Объявления
12.11.2010, 23:52     Как открыть файл для чтения в БИНАРНОМ режиме?
Ответ Создать тему
Опции темы

Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru