Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (DJVU)

Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 42

Файл №1114955 Г. Шилтд - Самоучитель C++ (DJVU) (Г. Шилтд - Самоучитель C++ (DJVU)) 42 страницаГ. Шилтд - Самоучитель C++ (DJVU) (1114955) страница 422019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Двоичный режим больше подходит для неотформатированных файлов, о которых в этой главе будет рассказано позже. 1. В представленной ниже программе создается файл для вывода, туда записывается информация, и файл закрывается. Затем файл снова открывается уже в качестве файла для ввода, и записанная ранее информация отгула считывается: Гбпс(пс1е <)ок)геагп> ()тпс1ис(е <йзпгеагп> итйпя пагпевраее зпс); )п( тпатп () ( оЕзгтеагп $оыП("Пезпп)у // создание файла для вывода И (!толе) ( соыс « "Файл открыть невозможно1п"; гелыгп 1; 1оиГ « "Привет)1п"; йод~ « 100 « ' ' « Ьех сс 100 << епс(1; 1опп .

с1озе( ); 1тзйтеа~п Ип ("йезсп); // открытие файла для ввода 1г(!тьп) ( соыс « "Файл открыть невовможно1п"; ге(и гп 1; с)так зев (801 (пс лЫ» век » 1; соыг « всг « ' ' <с 1 « еп61; Етп. с1озе () егцгп 0; Само)тчитепь С+~ После того как программа завершится, проанализируйте содержимое файла (ев(. Оно будет следующим: П(>ивет! 100 64 Как уже установлено, при использовании операторов << и >> для реализации файлового ввода/вывода, информация форматируется так же, как если бы она находилась на экране. 2. Рассмотрим другой пример файлового ввода/вывода.

В этой программе введенные с клавиатуры строки считываются и записываются в файл. Программа завершается при вводе знака доллара 3 в качестве первого символа строки. Для использования программы в командной строке задайте имя файла для вывода. Гт)пс1ит)е <ьовсгеаттт> ((1пс1пае <Гвсгеата> пвтпа патпеарасе втд; тттт арпа)п(тпт агяс, с)таг *аг~2л(1) Г(атас! =2) соис « "введите <татя Файла>хп" геГлгп 1; ода1геатттоттс (аггттт(11 ); // Файл для. вывода 1~ (! оттг.) ( соттс « "Файл открыть иевовттоткно'тп" т тетпгп 1; сваг аег(80)т соттс « Вводите строки; для окончания ввода введите дэтт"; йо ( соцс « сз гт » в"гт оттс « лсг « епс(1( иМ.1е (~асг != '3'); оп<. с1оае () гев тгп О; 3. В следующей программе копируется текстовый файл и при этом пробелы превращаются в символы [.

Обратите внимание, как для контроля конца файла для ввода используется функция ео((). Также обратите внимание, как Главе 9. Дополнительные возможности вводе/выводв в С++ поток ввода Вп воспринимает сброс флага вИртуа. Это предотвращает пропуск пробелов в начале строк. // Превращение пробелов в вертикальные линии й(пс!ит(е <тов1леага> Ш и с1тн(е < бите апт > пв(па патпеарасе в1<(; (пт пааво(1пк атас, с(тат *атдт[) ) ( 1т (атаке!=3) ( оопп << "преобразоватл<е <файл ввода> <файл вывода>'1п"; тесптп 1; 1Гв1сеав Нп(адат[1) ) ; // открытие Файла для ввода одвт.сеата Гоцу (адов[2)) р // создание файла для вывода 1Е(!опл) ( сопв « "Файл открыть невозможно~п"т тесптп 1; гб(! й'и) ( сопл « "Файл открыть невозможно~в*' „. есп сп 1; сват с1Ы гп.ппвест(гоа:: вЫрыв); // не пропускать пробелы н).~ 1е (! г1п, ео-() ) Йтт»с(з; тл(сн =' ') св = 1 б(! Г1п. вот () ) (он( « с)т; Гтп.с1оее() т аонк.с1оае (); пелппп Ср 4.

Между исходной библиотекой ввода/вывода С++ и библиотекой ввода/вывода современного стандарта Яапг(агд С++ имеются некоторые отличия, которые необходимо учитывать при модернизации старых программ. Во-первых, в исходной библиотеке ввода/вывода С++ у функции ореп(') имеется третий параметр, задающий режим зашиты файла. По умолчанию это режим обычного файла. В современной библиотеке С++ указанный параметр не поддерживается. Во-вторых, при работе со старой библиотекой для открытия потока ввода/вывода Ыгеав) необходимо явно указать значения режима открытия файла Самоучитель С+-~ 282 юк 1п и 1пзноШ. Значения режима открытия файла по умолчанию не поддерживаются.

Это относится как к конструктору класса Ыгеат, так и к функции прево. Например, при работе со старой библиотекой ввода/вывода С++, чтобы открыть файл для ввода и вывода с помощью функции преп(), необходимо использовать следующую конструкцию: га беата гауасгеаап гауза ееааь орен ("сеа1", Ьоа:: 1п 3 1оа:: оцс1; В современной библиотеке ввода/вывода С++, если режим открытия файла не указан, любой объект типа Ыгеат автоматически открывает файл для ввода и вывода. И последнее. При работе со старой библиотекой ввода/вывода к ошибке выполнения функции орем() ведет значение режима открытия файла, равное ювппопсгеа1е, если указанный файл не существует, или равное ювппогер1асе, если, наоборот, указанный файл уже существует.

В стандарте огапс1агд С++ данные значения режима открытия файла не поддерживаются. файла. Эта программа выводить на экран по- того, которое выводит- 1. Напишите программу для копирования текстового должна подсчитывать число копируемых символов и лученный результат. Почему это число отличается от ся при просмотре списка файлов каталога? 2. Напишите программу для заполнения информацией файле р)юпе.

следующей таблицы в Исаак ньютон, 415 555-3423 Роберт Годдард, 213 555-2312 Энрико Ферми, 202 555-1111 3. Напишите программу для подсчета числа слов в файле. Для простоты считайте, что словом является все, имеющее с двух сторон пробелы. 4. Какие действия выполняет функция 1а преп? 9.3. Неформатируемый двоичный ввод/вывод Хотя текстовые файлы (т.

е. файлы, информация в которых представлена в кодах АКСП, — примеч. лер.) полезны во многих ситуациях, у них нет гибкости неформатированных двоичных файлов. Неформатированные файлы содержат те самые исходные или "сырые" двоичные данные, которые непосредственно используются вашей программой, а не удобный для восприятия АЙВЗ Глава 9. Дополнительные возможности ввода/вывода в Сь~- человека текст, данные для которого транслируются операторами « и ».

Поэтому о неформатируемом вводе/выводе иногда говорят как о "сыром" (гап') вводе/выводе. В С++ для двоичных файлов поддерживается широкий диапазон функций ввода/вывода. Эти функции дают возможность точно контролировать процессы считывания из файлов и записи в файлы. На нижнем уровне двоичного ввода/вывода находятся функции ре(о и рн((). С помошью функции-члена рнт() можно записать байт; а с помощью функции-члена ре(() — считать. Эти функции являются членами всех потоковых классов соответственно для ввода и для вывода.

Функции ре(О и рнЦ) имеют множество форм. Ниже приведены их наиболее часто встречающиеся версии: з а~театп гзуе~ ( сна асиьжол); оаегеат арпа 1сьаг окпвол); Функция цегО считывает один символ из связанного с ней потока и передает его значение аргументу символ. Ее возвращаемым значением является ссылка на поток.

При считывании символа конца файла функция возвратит вызывающему потоку значение (а1зе. Функция рното записывает символ в поток и возвращает ссылку на поток. Для считывания и записи блоков двоичных данных используются функции геайО и жгло, которые также являются членами потоковых классов соответственно для ввода и для вывода. Здесь показаны их прототипы: 1вггеаюп Пгеас$(сиат *буОер, зсгеатв~пв ~спело оайа); ов1геатп Лч тнс(сопзт сЬаг *буфер, в1геаипаые впало оайе) т Функция геайо считывает из вызывающего потока столько байтов, сколько задано в аргументе число бийш и передает их в буфер, определенный указателем буфер.

Функция ип$еО записывает в соответствующий поток из буфера, который определен указателем буфер, заданное в аргументе число бойе число байтов. Значения типа Мгеаиыие представляют собой некоторую форму целого. Если конец файла достигнут до того, как было считано число байт символов, выполнение функции геайО просто прекращается, а в буфере оказывается столько символов, сколько их было в файле. Узнать, сколько символов было считано, можно с помощью другой функции-члена ~сонно), прототип которой приведен ниже: а1геатпв)ке даоппс0 т Функция возвращает количество символов, считанных во время последней операции двоичного ввода. Естественно, что при использовании функций, предназначенных для работы с двоичными файлами, файлы обычно открывают в двоичном, а не в тек- 284 Самоучитель Сч-+ стовом режиме. Смысл этого понять легко, значение режима открытия файла 1ов::Ь(вагу предотвращает какое бы то ни было преобразование символов.

Это важно, когда в файле хранятся двоичные данные, например, целые, вешественные или указатели. Тем не менее, для файла, открытого в текстовом режиме, хотя в нем содержится только текст, двоичные функции также вполне доступны, но при этом помните о возможности нежелательного преобразования символов. 1. В следуюшей программе на экран выводится содержимое файла. Используется функция яе1(). ()1пс1пг(е <: ояггеатп> Ыпс!иг(е <Гяггеаж> иа1пя пагпеарасе атг(; (пг гаавп(1пг агяс, спаг агут(11 с)таг суи 1й(агпс!=2) сопг « "Содержимое: <имя файла>Хп"; гепигп 1; в~яггеал 1п(агут(1(, 1оя::1п ( 1оя: пбапагу) 1й (! 1п) ( « "Файл откоыть иеаоэможиоХп"; ге пгп 1; иМ1е(!1п.еоХ()) 1п.пес(сл); сод(. « сй; 1п.с1ояе(); геспгп О; 2.

В данной программе для записи в файл вводимых пользователем символов используется функция рв1(). Программа завершается при вводе знака доллара 3. ((1пс1пг(е <1оя гаага> 41пс1псе <Еяггеагп> ияьпд паиеярасе ягс(; ) лава 9. Дополнительные возможности ввода/вывода в С++ 285 1пс па1п (1пь агяс, с)заг *агдл[) ) ( с)заг с!н 1Х(агдс!=2) сонГ « Запись: <имя файла>~п"; гегнгп 1; ойзс еап~ огас(агд~[ ), 1сз::онс 1 1оа::)>1пагу); 11 (!опв) сонь « "Файл открыть невозможно1п"г гегнгп 1; сонг. « "Лля остановки введите си>лзол 01п"; сю ( сонг « с1п.дел(с)з); Онс. РШ (Сп) 1 ) ы)т11е (сп)='> '); оцс.с1ове (); геслгп Ор Обратите внимание, что для считывания символов из потока с[п в программе используется функция вето.

Это предотвращает игнорирование начальных пробелов. 3. В следующей программе для записи строки и числа типа доиЫе в файл 1евт используется функция %ИеО: ()1пс1нсе <1овггеага> ()1пс1нг(е <Гвегеагл> $1пс1пс(е <сз1ппя> на[ля паг~еарасе з1с(; (пг пта(п () о1ьзгеа~п онг("Гевс", 1оз::ось 1 1ов".:)>1пагу) 1Г(! онь) ( соле « "Оайл открыть невозможно',и"; ге~нгп 1; оонЬ1е лига = 100.451 с)заг з(гЦ = "Это проверка"; Самоучитель Сч ч опт. ыт1Те ( (с)лат *) апшн, зькеоГ (с(оп)>1е) ) ) опт ют1се (зстг зсл1еп (зла) ); опт.. с1озе () ) те~ш:и О; и ~$"))и" <<<-' Приведение типа к (сйаг') при вызове функции мггйео необходимо, если буфер вывода не определен как символьный массив. Поскольку в С++ осуществляется строгий контроль типов, указатель на один тип не преобразуется автоматически в указатель на другой тип.

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

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

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

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