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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
12.11.2010, 23:34     Как открыть файл для чтения в БИНАРНОМ режиме? #1
Друзья! Файл, который надо открыть БИНАРНЫЙ, в нём два байта. Содержание файла
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
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     Как открыть файл для чтения в БИНАРНОМ режиме?
Ответ Создать тему
Опции темы

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