Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стандартные потоки

 

Достаточно поместить в текст программы препроцессорную директиву #include <iostream.h> и можно с помощью операций включения (записи) данных в поток << и извлечения (чтения) данных из потока >> выполнять обмен с дисплеем и клавиатурой ЭВМ.

Объясняется это тем, что заголовочный файл iostream.h не только подключает к программе описания классов ios, istream, ostream, stream, но и содержит определения стандартных потоков ввода-вывода:

сin – объект класса istream, связанный со стандартным буферизированным входным потоком (обычно клавиатура консоли);

cout – объект класса ostream, связанный со стандартным буферизированным выходным потоком (обычно дисплей консоли);

cerr - объект класса ostream, связанный со стандартным небуферизированным выходным потоком (обычно дисплей консоли), в который направляются сообщения об ошибках;

clog - объект класса ostream, связанный со стандартным буферизированным выходным потоком (обычно дисплей консоли), в который с буферизацией направляются сообщения об ошибках.

Операции >> и << обеспечивают связи с потоками только в том случае, если они употребляются справа от имен потоковых объектов. В противном случае они как обычно обозначают операции сдвига. В соответствии с синтаксисом языка операции сдвига <<, >> имеют невысокий приоритет. Им “предшествуют”, например, все арифметические операции, преобразования типов, скобки и др. Использование операций <<, >> для обозначения передач данных в потоки и из потоков не изменяет их приоритета. Поэтому допустима, например, такая запись:

Cout << 2 + 3 + 4;

В результате выполнения этого оператора на экран будет выведено значение 9. Таким образом, арифметические выражения можно без скобок использовать в качестве правых операндов с операцией включения (вывода) данных в поток.

Чтобы вывести в поток значение выражения, содержащего операции более низкого ранга чем <<, требуется применение скобок:

Cout << (a + b < c);

Так как условная операция?: и операции сравнения имеют более низкий приоритет, чем операция сдвига <<, то следующий оператор для отрицательного значения x

Cout << x < 0? –x: x;

никогда не сможет вывести абсолютное значение переменной x. Правильная запись:

Cout << (x < 0? –x: x);

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

Cout << (2 << 1);

Выведет в поток (и на экран) значение 4.

Выражения, в которые входят операции >> и <<, должны иметь значения. В соответствии с определением, находящимся в файле iostream.h, значением выражения

Cout << выражение

является ссылка на объект cоut, т.е. операция включения << возвращает ссылку на тот потоковый объект, который указан слева от неё в выражении. Следовательно, к результату выполнения включения можно вновь применить операцию <<, как и к объекту cout. Таким образом рационально применять “цепочки” операций вывода в поток. Например, так:

cout << “\nx * 2 = “ << x * 2;

Если значением х служит 33, то результате выполнения любого из этих операторов с новой строки на экран будет выведено:

x * 2 = 66

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

<== предыдущая лекция | следующая лекция ==>
Библиотека ввода-вывода | Указатели
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 325; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.