Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 84

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 84 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 842019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Он определен в классе дев и позволяет хранить максимальныс значения, которые может принимать параметр от(зе!. Тип ввейбхт прелставляст собой перечисление, определенное в классе 1ов. В нем содержатся разновидности поиска, выполняемого функциями вевкп и вев>ср. Часть ». Язык С++ Система ввода-вывода языка Сч+ управляет двумя указателями, связанными с файлами. Первый указатель, определяющий позицию„в которой выполняется чтение файла, называется «урсором чглеяия (йс( рош(ег). Другон указатель, определяющий позицию, в которой выполняется запись в файл, называется «урсором завися (рн! ро)п(ег).

Каждый раз при выполнении ввода и вывода соотвстствуюшнн курсор файла перемешается на одну позицию вперед. Однако функции вее)едО и веекр() позволяют выполнять произвольные перемещения по файлу. Функция вее)<дО перемешает связанный с ней курсор записи ца о(Ьег символов, отсчитывая от позиции ог(я)л. Позиция оп«чл задается тремя возможными значениями. 1ов:: Ьед Начало файла 1оя:: Ьед Тек)чаев положение воя:: епп Конец файла Функция вее)срО перемещает связанный с ней курсор записи на о2)зег символов, отсчитывая от позиции г)пя()ь Позиция опя(л задается тремя возможными значениями.

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

В командной строке следует зада~ь имя фаила и позицию изменяемого символа, за которой следует новый символ. Обратите внимание на то, что файл открыт лля операций ввода-вывода. В1пс1ийе <вояетеав> Ввпс1нг)е <Гяехеаг«> Мхпс1ос)е <сясс)11Ь> ив«ад патпеврасе вЖ хпс яавп(1пс ахдс, сЛат "ахдч()) ( 1Г( дс!=Е) ( соне « "Применение: СБроСЕ <имя фана|а> <старья символ> <новый символ>~п"; тегнтп 1; Гас«еаза онс(атдч(1], Гоя::вп ] зов::сне ] тоя::Ьхпаху) 1Г Ооос) ( соне « "Невозможно открыть файл."; хегохп 1; осе.веем(асов(ахдч(2]), воя::Ьед) оие.рис(*атдч(3]); осе.с1овеО; хеенхп О; ) Например, чтобы применить эту программу для замены двеналватого символа буквой Х, следует выполнить такую команлу.

$ с)1апде Севе 12 Е Следующая программа использует Функцию вее)<д(). Она выводит на экран содержимое файла, начиная с позиции, указанной в командной строке. Глава 2). Файловая система Мтпс1ис)е <Ковтхеам> Кхпс1ибе <1вттеалз> $1пс1п<(е <свтп11Ь> пв1пд пааеврасе втс)з ьпт лза1п(1пс атдс, спат *атдч[1) ( спат сп; зй(ахдс(=3) ( соит « "Применение: >НОИ <имя файла> <начальная позиция>1п'з тетюха 1з ) 1хвстеагз 1п(атдч[11, 1овзззп [ 1овззЫпату); з.й()з.п) ( соцс « "Невозможно открыть файл."з техатп 1з ) 1п.веекд(асо1(атдч[21), 1овззЬед); ип11е (1п.дев (сп) ) сопс «сп; тетпхп Оз Ниже показано, как с помощью функций везир() и веекд() переставить в обратном порядке первые лиаз символов в файле. $1пс1пз)е <ьовтхеазь> Зьпс1пде <йвттеае> $1пс1пде <свтН11Ь> ив1пд паееврасе всззз тпт тазп(1пс ахдс, спат *атдч[1) ( 11(ахдс)=3) ( спит « "Применение: Нечетве <имя файла> <пие>1п"з тетптп 1з ) йвсхеалз 1поис(атдч[1], 1овзззп ) зовззопт ) зовззыфззату)з И ((фпопс) ( соис « "Невозможно открыть файл.

1п"з теситп 1з ) 1опд е, 1, зз спат с1, с2з е = асо1(атдч[21)з Кот(1=0, б=ез 1<бз 1++, 3--) ( 1попс.вееКд(з, фовззЬед)з засос.дет(с1)," 1поцс.вееКд(5, 1овз:Ьед); 1поит.дет(с2)з Часть )). Язык С++ тпоис.все)тр(т, ъовт:Ьеп); ъпоис.рис(с2)т ъпоик.вее)тр(З, усат:Ьеп); ъпоик.рик(с1)т ) 1поис.с1ове() тесикп От Определение текущей позиции Текущую позицию курсоров чтения и записи можно определить с помощью функции ее11(т() н ее11р(). Их прототипы имеют следующий вил,. ров суре се11д()т ров суре се11р(); Тип ров куре определен в классс вов и позволяет хранить максимальное значсние, ксто- рос может вернуть функция.

Значения, возврацтасмые функциями ее11р() и ее11я(), можно использовать в качестве аргументов функции вее)кв() и вее)кр() соответственно. 1вктеатз авее)тц(ров Суре )юз); овккеаж авее)тп(ров Суре роз) т Эти функции позволяют сохранить текущее положение файлового курсора, выполнип оп- ределенные файловые операции, а затем восстановить прежнее положение курсора ";4 Статус ввода-вывода Система ввода-вывода языка С++ сохраняет информацию о результате каждбй операции ввода-вывода. Текущее состояние системы ввода-вывода хранится в объекте класса 1овсасе, который является перечислением, определенным в классе ков. Кроме этого, класс Вов содержит следующие члены. Имк Существуют два способа получи~ь информацшо о статусе авода-вывода.

Вопервых, можно вызвать функцию кттвеаеееп Она имеет следующий прототип. й ъовсасе тдвсасе()т Эта функция возвращает текущее состояние флагов ошибок. Как следует из вышесказанного, соли никаких ошибок нс обнаружено, функция кттвеаее() возвращает значение вообЬВс. В противном случае устанавливается флаг ошибки. Применение функции кттвеаее() иллюстрируется слсдуюшсй программой. Мвпс1ис)е <вовстеап> т Евпс1ш)е сбвькеаш> иввпп паткеврасе вест Глава 21. Файловая система 1ов т >ВоооЫС тов:тес(Ьтк тсаттта11ЫС тов::Ьадьтс Набор байтов, описывающих нормальное состояние. 1, если обнаружен конец файла, О в противном случае. 1, если обнаружена (возможно) поправимая ошибка. О а противном случае.

1, если обнаружена непоправимая ошибка, О в противном случае. тома сцесквеасиз(11вгтеаж а1п) апе таза(1пе асяс, снаг *асят() ) ( 11(атдс(=2] ( соие « "Применение: Огвр1ау <нмя файла>1п"; гееитп 1; 11вссеага 1п(агду(1)); 11(!1п) ( соис « "Невозможно открыть файл. 1п"; тееитп 1; ) сваг с; ми11е(1п.пес(с) ) ( 11(1п) соис « с; спесквеаеив(ьп)) ) спесвзеасие(1п); // Проверка заключительного состояния. 1п.с1сяе(); кееитп 0; ) чоЫ снесхзеаеив(11встеат а1п) ( 1ов::1оаеаее 1; 1 = 1п.гг)всасе() 11(1 а 1св::еогЬ1Е) соис « "Обнаружен конец файла1п"; е1ве 11(1 а 1ов::еа11Ь1Е) соне « "Обнаружена поправимая отибка)п"; е1ве 11(Ь Ь 1оа::ЬадЬте) соие « 'Обнаружена непоправимая ошибка)п"; ) Эта программа всегда обнаруживает одну "ошибку".

После завершения цикла мЬ11е последний вызов функции снес)гаеаеиа(), как и ожидалось, обнаруживает конец файла. Эта функция может оказаться полезной в любой программе. Второй способ обнаружения ошибки основан на применении следующих функций. | Ьао1 Ьаб(); Ьсо1 еог()> Ьоо1 еа11(); Ьоо1 дооб(); Функция ьаа() возвращает значение екие, если установлен флаг )жм)Ь1е. Функция еоа() возвращает значение етое, если установлен флаг яа11ь1е. Функция поест() возвращает значение етие, если никаких ошибок не обнаружено. В противном случае функция возвращает значение яа1ве. Флаги, соответстауюшие обнаруженным ошибкам, можно сбросить. Для этого следует вызвать с1еат[), прототип которой имеет следующий вид. Часть 1(.

Язык С++ й чо1п) с1еаг (1оясахе /)ая>=1ая:: аосс)Ыг) Если параметр /)ада является объектом дооаЫс (по умолчанию), все флаги ошибок сбрасываются. В противном случае параметр ()паз следует задать произвольно. М Настройка ввода-вывода в файлы В главе 20 были описаны операторы вставки и извлечения, псрсгружснныс для собственных классов. В этой главе был рассмотрен лишь консольный ввод-вывод. Однако, поскольку все потоки в языке С++ одинаковы, псрегрузку операторов вставки и извлечения можно применять как для консоли, так и для файлов. В качестве примера проанализируем слсдуюшую программу, которая модифицирует электронную телефонную книгу, описанную в главе 20.

Эта программа весьма проста. Она позволяет добавлять имена в список или выводить список имен на экран. Лля ввода и вывода телефонных номеров применяются псрегружснныс функции вставки и извлечения. Вы можете переделать эту про~рамму, дополнив ее возможностями поиска нужного номера или удаления нежелательнгвх ~юмеров. «1пс1цг)е <1ояхгееап> 41пс1цг)е саягтеащ> «1пс1цое <сяггапд> ця1пс пагпеярасе яМ/ с1аяя рцопеЬоох ( спат пале(80]; спат агеасо<)е(4]; снах рхе11к(4]/ спаг пцщ(5)) рцЫ1<: рнопеЬсок() ( )' рпопеЬоо)с(снах *п, снах *а, снах *р, снах *пл) ( яхтсру(паще, и): ягтсру(атеасог)е, а)> ягтсру(рхе11х, р); яхгсру(ццл, пт); ) ат1еп() Фехтер йсретагог« (сятгеащ йяггеащ, рнопеЬоох о); ах1епг) гяхтеащ йоретахох» (1яххеащ йяххеятп, рьопеьоок йо); ); // Выводит на экран имя и номер зеленова.

ояггеал йоретахог« (оясхеащ йягтеюп, рпопеЬоон о) ( яггеащ « о.пале с< яхгеащ « "(" « о.ахея<оп)е « ") яхгеащ « о.ргевбк <с яггеащ « о.пцщ « "1п"/ гегцгп ягтеащ; // Функция должна возвращать ссылку на попок. // Вводит имя и номер телеоона. 1яггеащ йоретахог» (1ягтеал йяггеал, рцспеЬоон йс) ( сося « "Введите имя: яхтеащ » о.паще; Глава 21. файловая система сааб « "Введите код города: яггеввз » о.агеааабез сапе « "Введите префиксз яггеаи » о.ргебфкз самс « Введите номер: ясгеаи » а.ппшз сапе « юхп"з геспгп ясгеаюз ) зпг тафп[) ( рнопеЬоок аз снах с; гяггеат рЬ["риопе", заязззп ! 1ояззоьв ) заяззарр); фг([рЬ) ( сапе « "Невозможна открыть файл с телефонной книгой.Ы"з гегагп 1[ ) гог(;з) ( бо ( сапе « "1.

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

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

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

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