Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
1

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

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

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

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

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

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

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

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

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

Решение

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

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

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

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

Как перенести параметры из ф-ции printf() в самодельную
1
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
16.08.2014, 18:57  [ТС] 8
Evg, Кажется усвоил, спасибо вам
0
16.08.2014, 18:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2014, 18:57
Помогаю со студенческими работами здесь

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

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

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

Выяснить, является ли последовательность возрастающей, есть ли в ней одинаковые соседние числа
Вводится последовательность целых ненулевых чисел, признак окончания ввода — ввод 0. Количество...

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

Каким образом выводят информацию о новой версии приложения
Вот стоит у меня какая то программа. Приходит уведомление о наличии обновления. Я обновляюсь....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru