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

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

30.08.2018, 11:57. Показов 10954. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru