С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
1

Является ли консоль носителем данных, то есть файлом, если потоки выводят информацию именно в ней?

16.08.2014, 16:57. Просмотров 828. Ответов 7
Метки нет (Все метки)

Система ввода-вывода С++ основана на работе с потоками. Потоки в свою очередь являются абстрактными объектами с логическим интерфейсом и файлом, где файл - это любой носитель данных. Стандартные потоки (cout, cin, cerr, clog, wcout, wcin, wcerr, wclog) С++ связаны с консолью, т.е. cmd.

Является ли консоль носителем данных, то есть файлом, если потоки выводят информацию именно в ней?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2014, 16:57
Ответы с готовыми решениями:

Два потока выводят информацию в консоль
Дана задача: Два потока выводят информацию в консоль. Один выводит время...

Есть ли возможность запускать jar файлы которые выводят лог в консоль, без ввода?
Доброго времени суток! Хотел узнать есть ли возможность запускать jar файлы...

Проверить, есть ли угроза королю и если есть, то от кого именно
нуждаюсь в вашей помощи... На шахматной доске стоят черный король и белые...

Флешка не показывает всю информацию, которая на ней есть
Приветствую знатоков. Флешка показывает часть инфы на...

Как определили, что электрон является носителем заряда?
Не могу сформулировать запрос для поисковика правильно, поэтому может кто...

7
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
16.08.2014, 17:12 2
Лучший ответ Сообщение было отмечено Unifan как решение

Решение

Виртуально cout, cin и прочее является файлом и оно так живёт для всей программной части вплоть до обращения к операционной системе. А внутри операционной системы уже идёт разбор, чем конкретно является дескриптор файла: устройством ввода-вывода, каналом, сокетом, файлом и т.п.

Сделано это так, чтобы на программном уровне как можно дальше абстрагировать пользователя от работы с устройством
1
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
16.08.2014, 17:39  [ТС] 3
Evg, но разве поток это не класс?
Или класс каким-то образом переходит в файл при обращении к нему?
0
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
16.08.2014, 18:12 4
Поток (мы говорим о "stream", а не о "thread") - это примитив операционной системы. Над ним надстраивают программные обёртки под названием "поток". Примитив операционной системы делают так, чтобы минимизировать взаимодействие программы с операционной системой. Условно говоря, операционная система предоставляет интерфейс "записать в дескриптор файла номер такой-то кусок данных лежащих по такому-то адресу такого-то размера" и всё. А дальше поверх этого строят более удобные для программирования интерфейсы типа printf ли cout, которые оперируют более удобными понятиями типа "целое число", "плавающее число", "строка и т.п.". Но внутри себя в момент печати эти интерфейсы в конечном итоге заполняют строковой буфер данными, которые нужно напечатать, и отдают этот буффер операционной системе. При этом даже не зная, с чем вообще идёт работа - с терминалом, с файлом, с сокетом и т.п.

Добавлено через 2 минуты
Вообще операционная система предоставляет интерфейс для пользовательских программ - API. В случае линукса это набор системных вызовов, в случае windows - это WinApi. Ничего за пределами этого API операционную систему не интересует. Операционной системе вообще пофиг, на каком языке написана твоя программа, она об этом даже и не знает
1
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
16.08.2014, 18:16  [ТС] 5
Evg, Просто в книжке от Герберта Шилдта написано, что классы basic_istream, basic_ostream, basic_iostream используются для создания потоков, обеспечивающий собственно ввод и вывод данных.
То есть если потоки уже определены, как примитив в операционной системе, то как классы систем ввода-вывода используются для создания этих потоков?
0
Gwini
10 / 10 / 3
Регистрация: 08.03.2014
Сообщений: 70
16.08.2014, 18:28 6
Цитата Сообщение от Unifan Посмотреть сообщение
то как классы систем ввода-вывода используются для создания этих потоков?
для управления ими в виде методов типа width, right, left, hex, oct, dec и тд. И в случае файлов — ручного открытия/закрытия с помощью open и close.
0
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
16.08.2014, 18:55 7
Цитата Сообщение от Unifan Посмотреть сообщение
то как классы систем ввода-вывода используются для создания этих потоков?
Реализация классов внутри себя в конечном итоге используют API операционной системы

Добавлено через 8 минут
Вот тебе пример упрощённой реализации printf'а. То, что есть write_string - считай, что это и есть интерфейс операционной системы, который печатает из строкового буфера в файловый дескриптор. А вся остальная программная шелуха - это надстройка над этим интерфейсом, у которой есть только одно назначение - сделать удобной процесс печати данных. Всякие cout и прочее реализованы по такому же принципу. При этом операционная система знает только то, что программа попросила её выдать в файловый дескриптор кусок памяти. Откуда вообще возник такой запрос (из printf'а, из cout'а или из напрямую вызыванного write'а), операционная система не знает

Как перенести параметры из ф-ции printf() в самодельную
1
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
16.08.2014, 18:57  [ТС] 8
Evg, Кажется усвоил, спасибо вам
0
16.08.2014, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 18:57

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

Дана строка S. Выяснить есть ли в ней прописные и строчные буквы латинского алфавита. Если есть, то вывести эти буквы
Задача №1 Дана строка S. Выяснить есть ли в ней прописные и строчные буквы...

Нужна ли консоль, если есть Workbench?
Если можно создавать БД и делать связи таблиц в Workbench, то появляется...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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