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

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

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

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

12.11.2010, 23:34. Просмотров 2736. Ответов 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++
Делаю вот так, но ничего не получается.:( std::fstream inOutCredit(&quot;credit.dat&quot;, std::ios::ate | std::ios::binary); if...

Как прочитать файл в бинарном режиме по 32 байта - C++
Здравствуйте, как считать файл в бинарном режиме (в двоичной системе счисления) по 32 байта, попутно записывая эти 32 байта в переменную...

Не может открыть файл для чтения - C++
Почему-то после закрытия не открывается файл F2? На последнем шаге программы(99 строка) срабатывает проверка: if(!F2) { cout...

Запись в файл в бинарном режиме - C++
Есть файл, 1.exe, как его открыть чтоб можно было записать в него свой hex код ?

Прочитать файл в бинарном режиме с записью результата в string - C++
Привет, как можно прочитать файл в бинарном режиме, но чтоб каждый байт в двоичной СС записывало в переменную типа string ?

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

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

И вот такой синтаксис:
C++
1
ifstream (const char* name, int mode= ios::in)
Вот его и хотелось бы придерживаться.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.11.2010, 23:52 #4
C++
1
ifstream in("input", ios::binary);
C++
1
in.read()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 23:52
Привет! Вот еще темы с ответами:

Запись в бинарный файл в бинарном режиме: будут ли числа записаны в двоичной системе счисления? - C++
Если я записываю случайное четырехзначное число в бинарный файл, открываю его в бинарном режиме, то будут ли те числа записаны в двоичной...

Файл: Открыть файл в режиме «а+», внести изменения, характеризующие этот режим. - C++
Открыть файл для записи и записать в него произвольную информацию. Закрыть файл. Открыть его же в режиме «а+», внести изменения,...

Как удалить файл только для чтения? - C++
Пишу функцию поиска файлов в указанной директории: void Delfil(char temp, int atrb) { if(atrb) { int key=0; ...

Как создать один файл для чтения и записи одновременно? - C++
Пробовал перезапись, но содержимое файла терялось while (file1.hasNext()) { file2.write(file.nextInt() + &quot; &quot;); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.11.2010, 23:52
Ответ Создать тему
Опции темы

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