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

Работа с двоичными файлами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна простая програмка после нажатия на которую будет автоматически скажем в течении 2 мин нажимать ENTER http://www.cyberforum.ru/cpp-beginners/thread755828.html
Нужна простая програмка после нажатия на которую будет автоматически скажем в течении 2 мин нажимать ENTER
C++ Имеется таблица T, состоящая из U структур Имеется таблица T, состоящая из U структур (U определить как константу). Считая, что в таблице структуры имеют разные ключи, описать и использовать в программе процедуру, упорядочивающую структуры таблицы по возрастанию их ключей. Срочно нужно написать прогу. Буду благодарен http://www.cyberforum.ru/cpp-beginners/thread755819.html
Из троичной системы счисления в 9-ю,не переводя все число в 10-ю C++
Помогите пожалуйста написать программу в С++, которая переводит число из 3й системы счисления в 9ю,не переводя все число в 10ю. Если можно попроще,заранее спасибо
Строки. Перевернуть первое слово. C++
перевернуть первое слово в строке по С++. помогите, за 30 минут нужно сделать !!!((
C++ Перевод числа из двоичной в восьмеричную СС http://www.cyberforum.ru/cpp-beginners/thread755812.html
Помогите пожалуйста написать программу на С++ ,которая переводит число из 2й системы счисления в 8ю,не переводя все число в 10ю. Если можно по проще,заранее спасибо
C++ Запись русских символов в char Добрый день господа!!! Мне нужно в поле char name записать 14 русских символов. Вот код: #include <iostream> using std::cout; using std::cin; using std::endl; using std::ios; using std::cerr; подробнее

Показать сообщение отдельно
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
12.01.2013, 21:23
-=- LIsA -=-, так, вот сейчас надо как-то аккуратно объяснить, чтобы не запутать еще больше... Попробую.

Цитата Сообщение от -=- LIsA -=- Посмотреть сообщение
как сделать, чтобы файл был бинарным?
Информация в компьютере хранится в двоичном виде. Точка. Содержимое файла - это последовательность байт. Как эти байты будут интепретированы - зависит от программы, которая работает с файлом. Так, текстовый редактор каждый байт понимает как код символа - его номер в таблице, и мы видим соответствующий символ на экране. Но от этого текст не перестает быть последовательностью байт.

Далее. В первом же ответе указали, что для чтения/записи сырых данных следует использовать методы read/write. Оператор << используется для форматированного ввода-вывода. Что это означает на практике...
Рассмотрим константу
C++
1
int number = 875770417;
Калькулятор подскажет, что в двоичном виде она выглядит так (младший байт записан первым):
00110001 00110010 00110011 00110100
Десятичные значения каждого байта:
49 50 51 52
Эти коды в таблице ascii соответствуют символам:
1 2 3 4

Следовательно, если я попытаюсь записать в файл значение number, используя метод write, то получу последовательность байт, которая будет отображаться как 1234. Если я воспользуюсь оператором << для форматированного вывода, то мое значение будет преобразовано к строке и в файле мы увидим другой набор символов: 875770417.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
#include <vector>
 
int main()
{
    int number = 875770417;
 
    std::ofstream of("out.txt");
 
    of << number << std::endl;
    of.write(reinterpret_cast<char*>(&number), sizeof(number));
 
    of.close();
 
    return 0;
}
Теперь про флаг ios::binary. Вообще он имеет смысл только под виндой. При чтении-записи в текстовом режиме в винде при записи символа перевода строки '\n' по факту пишется два символа: с кодами 0x0D (CR) и 0x0A (LF). При чтении же файла в текстовом режиме последовательность этих двух символов заменяется на '\n'. Открытие файла в бинарном режиме позволяет избежать такой замены. Также если нам нужно перемещаться по файлу, двоичным режим предотвратит потерю дополнительных байт.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru