|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
|||||||||||||||||
Создание системы потокового ввода/вывода25.12.2024, 23:57. Показов 1517. Ответов 10
Здравствуйте! У Старуструпа есть такая задачка, вот её текст:
Кликните здесь для просмотра всего текста
Да, с файловыми потоками работает нормально, но как создать аналог cout, cin вот здесь я понял, что ничего не понял из того, что пишет про потоки ввода-вывода в главе 21 Страуструп. Суть в чём, что главное-центральное в этой системе - это буфер(streambuf)? Хорошо, если это так то, видимо, нужно создать свой буфер для потокового ввода-вывода что-то подобное filebuf в задании, ну, например, в этом буфере можно задать размер буфера, открыть консоль с которой и работать в дальнейшем или просто использовать функции Си для ввода вывода или это всё же совсем не то? Короче говоря, хочется понять что к чему, как это работает под капотом. Хочу получить в результате что-то такое:
0
|
|||||||||||||||||
| 25.12.2024, 23:57 | |
|
Ответы с готовыми решениями:
10
Библиотека потокового ввода/вывода Функции потокового ввода/вывода Перегрузка потокового ввода/вывода |
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|
| 26.12.2024, 09:37 | |
|
Вопрос-то в чем?
cout, cin - просто глобальные переменные файлового потока, которым при создании указано имя "файла" (устройства) консоли. Ведь с точки зрения ОС консоль - это файл с предопределённым названием.
1
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
||||||||||||||||||
| 26.12.2024, 23:58 [ТС] | ||||||||||||||||||
|
Если что-то подобное запилить, то мало-мальски что-то получается:
Кликните здесь для просмотра всего текста
в main написать вот такой код:
//....
Ясно, что cout связан с консолью, но как и где именно эта связь устанавливается, для классов ifstream/ofstream - всё относительно ясно, основная работа выполняется в буфере filebuf, а вот с cout и cin не всё так очевидно( Короче говоря данный проект изначально проектировался лишь для ввода-вывода в файлы, видимо, нужно изначально проектировать иначе.
0
|
||||||||||||||||||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||||
| 28.12.2024, 17:20 | ||||
|
Добавлено через 12 минут Этот вот момент с написанием своего буфера, и аналогично написание своего аллокатора, очень специфический и появляется тока в определенных условиях. Эти условия и диктуют как должно выглядеть решение. Так шта криво - не криво, это все ерунда. Главное знать инструментарий. А когда придет время - смочь написать решение под конкретные реальные условия.
1
|
||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
|||||
| 28.12.2024, 23:58 [ТС] | |||||
|
0
|
|||||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||
| 29.12.2024, 00:04 | ||
|
У задачи всегда есть реальные требования, условия и ограничения, а не выдуманные.
0
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
||
| 29.12.2024, 00:22 [ТС] | ||
|
0
|
||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
|||||
| 29.12.2024, 19:48 | |||||
|
НеКОРЯВОСТЬ, будет тока в том случае, если твое решение фиксит проблематику конкретной задачи. Вот и всё. Если фиксит хорошо - значит не коряво. А в вакууме, в упражнениях, как оценить хорошо или нет, если требований нет? Вот о чём я толкую тебе. Короче не парься. Тебе надо изучить инструмент, а корвость-некорявость тебя должна волновать тока в реальных задачах, а не выдуманных. Добавлено через 3 минуты Кстати про изучение инструмента... Небезызвестный droffset вот тута оставлял список, и там есть занятная книженция (я о ней оттуда и узнал). Angelika Langer, Klaus Kreft, - "Standard C++ IOStreams and Locales".Книжка на инглише, но там всё есть про потоки.
0
|
|||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
||||||||||||||
| 02.01.2025, 13:24 [ТС] | ||||||||||||||
|
Не по теме: В этой же главе есть ещё одно задание, из текста не ясно, что имеется ввиду, вот оно:
0
|
||||||||||||||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||||
| 02.01.2025, 13:38 | ||||
|
Добавлено через 2 минуты В бинарном формате - это значит, что "не нужно переводить в текст". То есть если у тебя передается в operator<< переменная типа int, то в файле должны оказаться биты этой переменной, а не её текстовое представление.
1
|
||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,601
|
|||
| 02.01.2025, 16:12 [ТС] | |||
|
0
|
|||
| 02.01.2025, 16:12 | |
|
Помогаю со студенческими работами здесь
11
Итераторы потокового ввода/вывода stl Перегрузка операторов потокового ввода-вывода Перегрузка операторов потокового ввода вывода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|