Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 81

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 81 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 812019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 81)

в СЬесхег(пеюо.Маго() в <имя файла>:строка 41 Как видите, результаты выполнения непроверяемого на переполнение блока операторов были усечены. Когда же в проверяемом блоке операторов произошло переполнение, то возникла исключительная ситуация. Потребность в применении ключевого слова спес)гег( или цпсйес)гег( может возникнуть, в частности, потому, что по умолчанию проверяемое или непроверяемое состояние переполнения определяется путем установки соответствующего параметра компилятора и настройки самой среды выполнения. Поэтому в некоторых программах состояние переполнения лучше проверять явным образом.

) сьескес( ( а=2; Ь = 7) геяц1Г = сьескег(( Сопяо1е.ыг1сеглпе (Ъусе) (а * Ь) ) т // верно (" Проверенный на переполнение результат: геяц1г) т (Ьуге)(а * Ь))' // зта операция приводит к // исключительной ситуации (" Проверенный на переполнение результат: геяц1г)г // не подлежит выполнению 432 Часть Ь Язык СМ Байтовые и символьные потоки На самом низком уровне ввод-вывод в СФ осуществляется байтами. И делается это потому, что многие устройства ориентированы на операции ввода-вывода отдельными байтами.

Но человеку больше свойственно общаться символами. Напомним, что в СФ тип сьаг является 16-разрядным, а тип Ьуге — 8-разрядным. Так, если в целях ввода- вывода используется набор символов в коде АВС11, то для преобразования типа спас в тип Ьуге достаточно отбросить старший байт значения типа спас. Но это не годится для набора символов в уникоде (1)шсог)е), где символы требуется представлять двумя, а то и больше байтами.

Следовательно, байтовые потоки не совсем подходят для организации ввода-вывода отдельными символами. С целью разрешить это затруднение в среде .НЕТ Ргашетчог)с определено несколько классов, выполняющих превращение байтового потока в символьный с автоматическим преобразованием типа Ьуге в тип сьаг и обратно.

Встроенные потоки Для всех программ, в которых используется пространство имен Я уз гев, доступны встроенные потоки, открывающиеся с помощью свойств Сопяо1е. 1п, Сопяо1е. Оиг и Сопяо1е. Еггог. В частности, свойство Сопяо1е. Опг связано со стандартным потоком вывода.

По умолчанию это поток вывода на консоль. Так, если вызывается метод Сопяо1е. Нгггеьгпе (), информация автоматически передается свойству Сопяо1е. Опг. Свойство Сопяо1е . 1п связано со стандартным потоком ввода, который по умолчанию осуществляется с клавиатуры. А свойство Сопяо1е. Еггог связано со стандартным потоком сообщений об ошибках, которые по умолчанию также выводятся на консоль. Но эти потоки могут быть переадресованы на любое другое совместимое устройство ввода-вывода. Стандартные потоки являются символьными.

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

Основные классы потоков определены в пространстве имен Я уя гев. 10. Для того чтобы воспользоваться этими классами, как правило, достаточно ввести приведенный ниже оператор в самом начале программы. иятпд Яуягев. 10; Пространство имен Я у я гев. 10 не указывается для консольного ввода-вывода потому, что для него определен класс Сопяо1е в пространстве имен Яуягев. Класс Вйееате Основным для потоков является класс Яуягев.

10. Яггеав. Он представляет байтовый поток и является базовым для всех остальных классов потоков. Кроме того, он Глава 14. Применение средств ввода-вывода 433 является абстрактным классом, а это означает, что получить экземпляр объекта класса Бсгеаж нельзя. В классе Бсгеав определяется ряд операций со стандартными пото- ками, представленных соответствующими методами. В табл. 14.1 перечислен ряд наи- более часто используемых методов, определенных в классе Бггеавь Таблица 14.1. Некоторые методы, определенные в классе Вбкеагв Метод Описание ио1с( С1озе() чоз.с( Р1изЬ() Закрывает поток Выводит содержимое потока на физическое устрой- ство Возвращает целочисленное представление следующе- го байта, доступного для ввода из потока. При обнару- жении конца файла возвращает значение -1 Делает попытку ввести соипс байтов в массив ьиееег, начиная с элемента ьиееег [иеезег].

Воз- вращает количество успешно введенных байтов Устанавливает текущее положение в потоке по указан- ному смещению сЕЕзес относительно заданного на- чала отсчета сгддуп. Возвращает новое положение в потоке Выводит один байт в поток вывода Выводит подмножество соипс байтов из массива ьиееег, начиная с элемента ьиееег [ сеезе с] . Воз- вращает количество выведенных байтов ьпг Неас(ВУСе() тпс Неаг)(ЬУСе[] ЬиЕЕег, 1пс ОЕЕзеср 1пс соипс) 1опи Баек(1опи оЕЕзег, Бееког1и1п игддлп) чодс Иг1Сенуге(ЬУСе иа1ие) чо1с( Игьье(ЬУСе[]ЬиЕЕег, 1пг оЕЕзег, 1пс соиле) Таблица 14.2.

Свойства, бпределенные в классе Ббкевпг Свойство Описание Ьоо1 Сапнеаг( Принимает значение сгие, если из потока можно ввести данные. Доступно только для чтения Принимает значение сгие, если поток поддерживает запрос текущего положения в потоке. Доступно только для чтения Ьоо1 Сапэеек Некоторые из методов, перечисленных в табл.

14.1, генерируют исключение 1сехсерсдоп при появлении ошибки ввода-вывода. Если же предпринимается попытка выполнить неверную операцию, например вывести данные в поток, предназначенный только для чтения, то генерируется исключение ЫоСБирроггес(Ехсерг1оп. Кроме того, могут быть сгенерированы и другие исключения — все зависит от конкретного метода. Следует заметить, что в классе Бггеагл определены методы для ввода (или чтения) и вывода (или записи) данных. Но не все потоки поддерживают обе эти операции, поскольку поток можно открывать только для чтения или только для записи. Кроме того, не все потоки поддерживают запрос текущего положения в потоке с помощью метода Бее)г ( ) .

Для того чтобы определить возможности потока, придется воспользоваться одним, а то и несколькими свойствами класса Бггеааь Эти свойства перечислены в табл. 14.2 наряду со свойствами ьепи сп и роз 1 с 1 оп, содержащими длину потока и текущее положение в нем.

434 Часть (. Язык С() Окончание табл. 14.2 Свойство Описание Ьоо1 СапИгТСе Принимает значение стае, если в поток можно вывести данные. До- ступно только для чтения Содержит длину потока. Доступно только для чтения Представляет текущее положение в потоке. Доступно как для чтения, так и для записи Представляет продолжительность времени ожидания в операциях ввода. Доступно как для чтения, так и для записи Представляет продолжительность времени ожидания в операциях вывода. Доступно как для чтения, так и для записи 1опо ЬепоСЬ 10пч РовТс10П Тпг Беас(Т1веоиС 1пг ИгтгеТТвеосС Классы байтовых потоков Производными от класса БСгеав являются несколько конкретных классов байтовых потоков. Эти классы определены в пространстве имен Бувгев.

10 и перечислены ниже. Класс потока Описание Заключает в оболочку байтовый поток и добавляет буфериза- цию. Буферизация, как правило, повышает производительность Байтовый поток, предназначенный для файлового ввода- вывода Байтовый поток, использующий память для хранения данных Байтовый поток, использующий неуправляемую память для хранения данных Всгсегес)ЯСгеав Р11еБСгеав Иевогуяггеав С)пвапаоес()Чевогуягсеав В среде НЕТ Егащеи ог)с поддерживается также ряд других конкретных классов потоков, в том числе для ввода-вывода в сжатые файлы, сокеты и каналы.

Кроме того, мохсно создать свои собственные производные классы потоков, хотя для подавляющего числа приложений достаточно и встроенных потоков. Классы-оболочки символьных потоков того С1ове () Для создания символьного потока достаточно заключить байтовый поток в один из классов-оболочек символьных потоков. На вершине иерархии классов символьных потоков находятся абстрактные классы Техгпеас(ег и Техгиг1Сег. Так, класс Техгпеас(ег организует ввод, а класс ТехгигТСег — вывод. Методы, определенные в обоих этих классах, доступны для всех их подклассов. Они образуют минимальный набор функций ввода-вывода, которыми должны обладать все символьные потоки. В табл. 14.3 перечислены методы ввода, определенные в классе Техспеас(ег.

В целом, эти методы способны генерировать исключение 10БхсерС1оо при появлении ошибки ввода, а некоторые из них — исключения других типов. Особый интерес вызывает метод БеаЖ1пе ( ), предназначенный для ввода целой текстовой строки, возвращая ее в виде объекта типа в с гт по. Этот метод удобен для чтения входных данных, содержащих пробелы. В классе техспеас)ег имеется также метод с1озе (), определяемый следующим образом.

Глава 14. Применение средса ввода-вывода 435 Этот метод закрывает считывающий поток и освобождает его ресурсы. Таблица 14.3. Методы ввода, определенные в ю(ассе Тех~Хкеабег Метод Описание 1пг Реех() Получает следующий символ из потока ввода, но не удаляет его. Возвращает значение -1, если ни один из символов не доступен Возвращает целочисленное представление следую- щего доступного символа из вызывающего потока ввода.

При обнаружении конца потока возвращает значение -1 Делает попытку ввести количество соипс сим- волов в массив ЬиТГег, начиная с элемента ЬиТТег[1пбех], и возвращает количество успеш- но введенных символов Делает попытку ввести количество соипс сим- волов в массив ЬиТГег, начиная с элемента ЬиТГег [1пбех), и возвращает количество успеш- но введенных символов Вводит следующую текстовую строку и возвращает ее в виде объекта типа ясг1пс.

Характеристики

Тип файла
DJVU-файл
Размер
7,66 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6556
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее