Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/47: Рейтинг темы: голосов - 47, средняя оценка - 4.51
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121

Что такое форматированные и неформатированные данные в C++

30.08.2018, 11:57. Показов 11231. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас изучаю файловый ввод-вывод и в учебнике наткнулся на форматированные и неформатированные данные. Толком ничего не сказано, не понимаю что это такое и в чём разница.
У меня есть предположение что неформатированные данные - это данные, хранящиеся в файле, который открыт в режиме двоичного доступа. А форматированные - это данные хранящиеся в файле, который открыт в текстовом режиме. Но это только догадки и точного ответа на свой вопрос я не знаю.
Надеюсь на вашу помощь, форумчане! Заранее спасибо!)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.08.2018, 11:57
Ответы с готовыми решениями:

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое конструктор по умолчанию? Как инициализируются данные-члены объекта?
Что такое конструктор по умолчанию? Как инициализируются элементы данных объекта, если класс имеет только неявно определенный...

Что такое IIS и что такое PWS? Почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с серверами я ничего не понимаю! что...

37
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
07.09.2018, 23:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от QuakerRUS Посмотреть сообщение
get
Это тоже для неформатированного ввода. В отличие от read, которая считывает строку символов, get считывает символ.

Цитата Сообщение от JustLearn Посмотреть сообщение
За двоичный ввод-вывод отвечают get и put верно?
Когда вы организуете двоичный ввод-вывод (то есть бинарный), вы работаете с неформатированными данными. Можете использовать get/put для посимвольной работы или read/write для построчной. То есть get, put, read, write - это все относится к неформатированному вводу/выводу и можно применять для бинарной работы с файлом.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.09.2018, 23:42
Цитата Сообщение от JustLearn Посмотреть сообщение
верно?
Все верно. Просто записывая put, а читая read, ты получишь полную ахинею. Как и наоборот "write - get"
Разные механизмы. put & get преобразуют данные по сложным, но очевидным правилам (см паст 13).
А write - read - как акын, чего дали, о том и поют.
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.09.2018, 23:45
Цитата Сообщение от JustLearn Посмотреть сообщение
После этих примеров идёт следующая тема под названием "НЕФОРМАТИРОВАННЫЙ и двоичный ввод-вывод", которая начинается со слов: "Хотя читать и записывать ФОРМАТИРОВАННЫЕ файлы весьма просто, такой способ не всегда оказывается самым эффективным. Кроме того, вам может понадобиться записывать в файл не текст, а НЕФОРМАТИРОВАННЫЕ (НЕОБРАБОТАННЫЕ) данные". Вот после этих слов и возник вопрос. Верхним регистром выделил именно то, что непонятно.
Хреновый учебник.
Компьютер хранит числа в форме байтиков. Грубо говоря, в двоичной системе исчисления с фиксированным числом разрядов (0000 0000 0000 1100).
Человек записывает числа в форме циферок. И число этих циферок может меняться (12, а не 0000 0012).
Компьютеру неудобно с циферками, человеку неудобно с байтиками. То что ваш учебник называет "форматированным вводом-выводом" - перевод отдельных переменных из одного представления в другое.

Только к реальному форматированному выводу все это имеет примерно такое же отношение как рогатка к арбалету. То есть, для студенческих проектов то конечно и file<<var1<<" "<<var2 сойдет. Но если вам скажем, субтитры читать-писать надо, то простым << вы не отделаетесь. И это будет однозначно сложнее чем "да write/read без форматирования и всего делов".
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.09.2018, 23:50
QuakerRUS, в индивидуальной педагогике самое важное и трудно уловимое - понять, чего ж этот пень не понимает. Бывало, что таким пнем бывал я и сам. Но подкопы с разных сторон под этот пень, возможно, и смогут помочь. Тем более, что самому ТС хочется решить старинный вопрос - Что есть истина.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
07.09.2018, 23:55
Байт, у меня не возникло непонимания чего хочет ТС. Дейтелы, например, достаточно развернуто объясняют чем отличается форматированный ввод/вывод от неформатированного, вопрос собственно про эти отличия и был.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.09.2018, 23:58
Цитата Сообщение от Байт Посмотреть сообщение
Файл - это последовательность байтов (битов, ибо байты состоят из битов). И больше ничего.
Придание некоторого смысла этой последовательности, и специфическая, согласующаяся с этим смыслом, обработка - это и есть форматирование.
Не так ли?

Добавлено через 1 минуту
Renji, мы с вами дудим в одну дуду, но на разных регистрах.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
08.09.2018, 00:00
Цитата Сообщение от Байт Посмотреть сообщение
Не так ли?
В целом верно, но зачем сюда приплетать понятие "файл"? Речь может идти о любом потоке, о выводе на монитор, о вводе с клавиатуры, и, конечно, о работе с файлами.
0
08.09.2018, 00:01

Не по теме:

Цитата Сообщение от QuakerRUS Посмотреть сообщение
у меня не возникло непонимания чего хочет ТС.
А у меня возникло. И не знаю, кому из нас лучше, кому хуже, кому скушней, кому интересней.

0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
08.09.2018, 00:12  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
QuakerRUS, в индивидуальной педагогике самое важное и трудно уловимое - понять, чего ж этот пень не понимает. Бывало, что таким пнем бывал я и сам. Но подкопы с разных сторон под этот пень, возможно, и смогут помочь. Тем более, что самому ТС хочется решить старинный вопрос - Что есть истина.
Давайте без пней, ладно? Возможно то, что я спрашиваю может показаться вам очевидным и итак понятным. Но я новичок в этом деле. И даже не сколько в C++ сколько вообще в программировании. И всё, что я хочу это понять всё так, чтобы не осталось ни одного вопроса, ни одной непонятки.

Добавлено через 2 минуты
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Байт, у меня не возникло непонимания чего хочет ТС. Дейтелы, например, достаточно развернуто объясняют чем отличается форматированный ввод/вывод от неформатированного, вопрос собственно про эти отличия и был.
Мне отвечают на вопрос и из ответа возникает еще один вопрос. После ответа на следующий вопрос ещё один и ещё один. QuakerRUS, для меня лично Ваши ответы мне кажутся самыми точными, прямо в яблочко
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
08.09.2018, 00:21
JustLearn, главное, что вы должны понять, это то, что не стоит смешивать понятия "форматированные и неформатированные данные" и "двоичная работа с файлом". Первое может относиться к любому вводу/выводу, не только к бинарным файлам. Другое дело то, что для организации работы с двоичным файлом как правило используют неформатированный ввод/вывод из-за фиксированных размеров полей, с которыми необходимо работать в бинарном файле.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
08.09.2018, 23:57  [ТС]
QuakerRUS, у меня осталась ещё парочка вопросов Но для начала хочу подытожить всю полученную мной информацию и убедиться правильно ли я всё понял.
1) Неформатированные данные (в том числе строки и символы) записываются также, как и данные хранятся в компьютере, т.е. только в числовом представлении.
2) Для организации двоичного ввода-вывода нужно (точнее лучше всего) использовать неформатированные средства ввода-вывода такие как read и write, get и put.
3) Форматированный ввод-вывод предоставляет возможность задавать потокам различные форматы по типу setfill() width() и т.д.
4) При форматированном выводе данные в файл записываются не только в числовом представлении, но и в строковом и символьном.
5) Если в файл производить запись с помощью неформатированных средств, то с помощью форматированных средств чтения считать файл не выйдет. Как и наоборот. Если в файл производить запись с помощью форматированных средств, то с помощью неформатированных средств чтения считать файл не выйдет.
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
09.09.2018, 01:20
1. В неформатированные данные можно передавать что хотите, необязательно данные в "числовом представлении". Хотя как правило при бинарной записи в файл используют такое представление для экономии места.
2. Да.
3. Да.
4. Можно записывать как угодно. Важно понимать различия текстового и бинарного файла. Как правило форматированный вывод используют для записи в текстовые файлы.
5. В общих чертах так. Можно придумать какие-нибудь костыли, но это просто не имеет смысла. Обычно в зависимости от того в каком вы варианте выбрали запись в файл, в таком реализуете и чтение.

Лучше книги я не объясню. Если вы считаете, что в той книге, которую вы читаете недостаточно хорошо объяснены эти моменты, возможно стоит прочитать этот материал с другого учебника. Литература есть тут (второй пост).
Литература C++
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
14.09.2018, 18:41  [ТС]
Цитата Сообщение от QuakerRUS Посмотреть сообщение
В неформатированные данные можно передавать что хотите, необязательно данные в "числовом представлении". Хотя как правило при бинарной записи в файл используют такое представление для экономии места.
Вы, говоря: "В неформатированные данные можно передавать что хотите, необязательно данные в "числовом представлении", имеете в виду то, что с помощью get, put, read, write в файл можно записывать не только числа, но и символы и строки?

Если да, то я говорю о том же.

Я имел в виду, что чтобы мы не записывали с помощью не форматированного ввода-вывода в файле это будет выглядеть в числовом представлении. Или я что-то неверно понял?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
14.09.2018, 18:58
Цитата Сообщение от JustLearn Посмотреть сообщение
Я имел в виду, что чтобы мы не записывали с помощью не форматированного ввода-вывода в файле это будет выглядеть в числовом представлении. Или я что-то неверно понял?
Если я запишу неформатированным выводом четыре символа: '1', '2', '3', '\n' это будет какая будет информация? Я про то, что форматированность не влияет на то в каком виде можно хранить информацию, это способ ввода/вывода данных. Просто не надо смешивать понятия и искать зависимости которых нет.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
14.09.2018, 20:55
Цитата Сообщение от JustLearn Посмотреть сообщение
Вы, говоря: "В неформатированные данные можно передавать что хотите, необязательно данные в "числовом представлении", имеете в виду то, что с помощью get, put, read, write в файл можно записывать не только числа, но и символы и строки?
Символы в плюсах это и есть числа. Запись 'a'*10-3 абсолютно корректна. Записи же в файл строк в плюсах попросту нет. Есть запись в файл массива символов эту строку образующих. Тонкая разница состоит в том что каких либо данных о размере и конце массива никто не сохраняет. Если же вы сами подписали <<std::endl, то это вы уже сделали немножко ручного форматирования вывода (и он все равно сломается если в строке был символ '\n'). Но на ручное форматирование флажочки "текстовый режим" влияют чуть более чем никак. На то оно и ручное.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
16.09.2018, 19:34  [ТС]
QuakerRUS, я что-то окончательно запутался Можете посоветовать литературу, в которой будет хорошо описан файловый ввод-вывод, в том числе форматированный и неформатированный?

Добавлено через 1 минуту
Под литературой я имею в виду именно книги, а не статьи в интернете. Всё-таки по книгам приятнее обучаться
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
16.09.2018, 19:36
JustLearn, Харви Дейтел, Пол Дейтел - Как программировать на C++
В целом неплохая книга, хоть и встречаются опечатки. Сам по ней учился, правда по более старому изданию.

Литература C++
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
23.09.2018, 12:18  [ТС]
Всем большое спасибо за ответы! Но вопрос пока остаётся открытым. Почитаю Харви Дэйтела, Пола Дэйтела может пойму эту тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2018, 12:18

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое напряжение и что такое сила тока с позиции заряженных частиц
Объясните пожалуйста, что такое напряжение и что такое сила тока с позиции заряженных частиц. Например, имеется проводник в цепи, чем...

Что такое монитор и что такое мьютекс? Это же разные вещи?
Здравствуйте. В разных айти-статьях по-разному используют эти термины, причём часто их путают друг с другом. Хотелось бы, чтобы кто-нибудь...

Что такое метод equals() и что такое класс Object
Ответи на два вопроса очень надо 1) Что такое метод equals(). Чем он отличается от операции ==. 2) Что такое класс Object? Какие в нем...

Что такое хэндлер файла? Что такое файловый указатель?
Что такое хэндлер файла? Что такое файловый указатель?


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru