Программирование
Добавить в закладки К обложке
- 1. Системы программирования - Страница 1
- 2. Классификация языков программирования высокого уровня - Страница 2
- 3. Переменные Visual Basic - Страница 3
- 4. Типы переменных - Страница 4
- 5. Целочисленные, переменного типа и переменные данных - Страница 5
- 6. Объявление переменных: оператор Dim для различных типов данных - Страница 6
- 7. Изменение значений по умолчанию для типов, область видимости - Страница 7
- 8. Используемые символы языка СИ - Страница 8
- 9. Константы языка СИ - Страница 9
- 10. Примеры использования констант языка СИ - Страница 10
- 11. Идентификатор. Ключевые слова - Страница 11
- 12. Комментарии. Исходные файлы - Страница 12
- 13. Область видимости - Страница 13
- 14. Объявление переменной на внутреннем уровне с классом памяти static - Страница 14
- 15. Объявление переменной, которая служит именем внешнего массива - Страница 15
- 16. Методы доступа к элементам массивов - Страница 16
- 17. Директивы препроцессора - Страница 17
- 18. Применение директив - Страница 18
- 19. Рекурсия - Страница 19
- 20. Знакомство с языком СИ++ - Страница 20
- 21. Комментарии в СИ++ - Страница 21
- 22. Соотношение между основными типами данных в СИ++ - Страница 22
- 23. Операции языка СИ++ - Страница 23
- 24. Оператор выражение. Пустой оператор - Страница 24
- 25. Оператор switch, break. Копирование строки - Страница 25
- 26. Описание функций - Страница 26
- 27. Исходные файлы С++ - Страница 27
- 28. Описание - Страница 28
- 29. Описание и скрытие имен - Страница 29
- 30. Имена переменных - Страница 30
- 31. Разыменование - Страница 31
- 32. Ссылка - Страница 32
- 33. Выражения и операторы - Страница 33
- 34. Функции и файлы - Страница 34
- 35. Классы - Страница 35
- 36. Перегрузка операций - Страница 36
- 37. Производные классы - Страница 37
- 38. Потоки - Страница 38
- 39. Инспектор объектов для языка Дельфи - Страница 39
- 40. Окно редактора кода Дельфи - Страница 40
- 41. Сообщения Дельфи - Страница 41
- 42. Оптимизация по быстродействию в Ассемблер - Страница 42
- 43. Оптимизация по размеру в Ассемблер - Страница 43
- 44. Достоинства и недостатки оптимизации - Страница 44
- 45. Отказ от универсальности - Страница 45
- 46. Оптимизация переходов и вызовов подпрограмм - Страница 46
- 47. Оптимизация циклов - Страница 47
- 48. Управляющие таблицы - Страница 48
- 49. Оптимизация для конкретных моделей процессоров - Страница 49
- 50. Органы управления (controls) Active X - Страница 50
- 51. Синтаксис Active X - Страница 51
- 52. Практикум Active X - Страница 52
- 53. Сценарии и документы - Страница 53
- 54. Netscape Navigator - Страница 54
- 55. Понятие системы VВА - Страница 55
- 56. Язык программирования VВА - Страница 56
38. Потоки
Язык C++ не обладает средствами для ввода/вывода. Ему это и не нужно; подобные средства легко и элегантно можно создать, применяя сам язык. Стандартная библиотека потокового ввода/вывода дает возможность осуществлять гибкий и эффективный с гарантией типа метод обработки символьного ввода целых чисел, чисел с плавающей точкой и символьных строк, кроме того, простую модель ее расширения с целью обработки типов, определяемых пользователем.
Разработка и осуществление стандартных средств ввода/вывода для языка программирования является заведомо трудной работой. Традиционно средства ввода/вывода изобретались только для небольшого числа встроенных типов данных. Но в C++ программах обычно применяется много типов, определенных пользователем, и необходимо обрабатывать ввод и вывод также и значений этих типов. Средство ввода/вывода должно являться простым, удобным, надежным в употреблении, эффективным и гибким и при этом полным. Еще не удавалось угодить всем, поэтому у пользователя должна иметься возможность задавать альтернативные средства ввода/вывода и увеличивать стандартные средства ввода/вывода применительно к требованиям приложения.
C++ устроен так, чтобы у пользователя имелась возможность определять новые типы, такие же эффективные и удобные, сколь и встроенные типы.
Средства ввода/вывода связаны только с обработкой преобразования типизированных объектов в последовательности символов и обратно. Существуют и другие схемы ввода/вывода, но эта служит основополагающей в системе UNIX, и большая часть видов бинарного ввода/вывода обрабатывается через изучение символа просто как набор бит, при этом его общепринятая связь с алфавитом не воспринимается. Тогда ключевая проблема состоит в задании соответствия между типизированным объектом и принципиально не типизированной строкой.
Обработка как встроенных, так и определенных пользователем типов однородным образом и с гарантией типа осуществляется при помощи одного перегруженного имени функции для набора функций вывода.
К примеру:
put(cerr,»x = «); // cerr – поток вывода ошибок
put(cerr,x);
put(cerr,»\n»);
Тип параметра устанавливает то, какая из функций put будет вызываться для каждого параметра. Это решение использовалось в нескольких языках. Но ему не хватает лаконичности. Перегрузка операции << значением «поместить в» дает лучшую запись и дает возможность программисту выводить несколько объектов одним оператором. К примеру:
cerr << «x=» << x << «\n»;
где cerr представляет собой стандартный поток вывода ошибок.