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

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

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

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

Важно отметить, что в некоторых компиляторах поддерживаются следующие три, несколько иные формы инструкции ая»: аяп ао мноаРузиРак; аып ас кновруицюк 4иаичеозоа~ конец отроки Самоучитель авш ( воеладеввваламооаь ассвиблврних мнетрувцкй ) Здесь ассемблерные инструкции не выделяются кавычками.

Для правильного встраивания ассемблерных инструкций вам понадобится изучить техническую документацию на ваш компилятор. 8 среде программирования М/сговоП Ивиа( С++ для встраивания ассемблерного кода используется инструкция ввт, Зо воем остальном зта инструкция аналогична только что описанной инструкции авт. 1. В этой программе функция йп)со компонуется не как функция С++, а как функция С: // Демонстрация спецификаторв сборки гг(пс!ис)е <говсгеапР ив!пя патеврасе всс)т ехгегп "С" ьпс гипс(ьпт.

х) ) // компонуется как функция С // Теперь функция компонуется как функция С. (пт гипс ().пс х) ( гегцгп х/3; Теперь эта функция может компоноваться с программой, которая компилировалась компилятором С. 2. В представленной ниже программе компилятору сообщается, что функции ПО, ИО и ОО должны компоноваться как функции С: ехгегп "С" ( уо!о ~1 (); )пт г2 ().пс х); с)оцЫе ЙЗ (с)ои)з1е х, шг *р) т 3. В этом фрагменте в функцию йшеО вставляется несколько ассемблерных инструкций: 411 Глава 13.

Прост анства имен ид угие темы // не пытайтесь выполнить эту функцию! уоЫ йспс () аяп ("точ Ьр, вр"); аяп ("рцвЬ ак") у азтп ("тот с1, 4"); /l Для успешного использования встроенного ассемблера вы должны быть опытным программистом на языке ассемблера. Кроме этого, нужно тшательно изучить техническую документацию на ваш компилятор. Изучите те разделы технической документации на ваш компилятор, которые относятся к спецификаторам сборки и интерфейсу с ассемблером.

13.7. Массивы в качестве объектов ввода/вывода Помимо ввода/вывода на экран и в файл, в С++ поддерживается целый ряд функций, в которых в качестве устройств для ввода и вывода используются массивы. Хотя ввод/вывод с использованием массивов (актау-Ьазеа 1/О) в С++ концептуально перекликается с аналогичным вводом/выводом в С (в особенности это касается функций ааеапЩ и аргй1Ц) языка С), ввод/вывод с использованием массивов в С++ более гибкий и полезный, поскольку он позволяет интегрировать в него определенные пользователем типы данных. Хотя охватить все аспекты массивов в качестве объектов ввода/вывода невозможно, здесь рассматриваются их наиболее важные и часто используемые свойства.

Важно понимать, что для реализации ввода/вывода с использованием массивов тоже нужны потоки. Все, что вы узнали о вводе/выводе С++ из глав 8 и 9 применимо и к вводу/выводу с использованием массивов. При этом, чтобы узнать о всех достоинствах массивов в качестве объектов ввода/вывода, вам следует познакомиться с несколькими новыми функциями.. Эти функции предназначены для связывания нужного потока с некоторой Самоучитель С+~- областью памяти.

После того как эта операция выполнена, весь ввод/вывод производится посредством тех самых функций для ввода и вывода, о которых вы уже знаете. Перед тем как начать пользоваться массивами в качестве объектов ввода/вывода, необходимо удостовериться в том, что в вашу программу включен заголовок <я(гя(геаг))>. В этом заголовке определяются классы Ыгя(геат, оя(тя$геяш и я1гяггеа)п, Эти классы образуют, соответственно, основанные на использовании массивов потоки для ввода, вывода и ввода/вывода. Базовым для этих классов является класс юя, поэтому все функции и манипуляторы классов )я1геат, оя$геят и юя$гея)п имеются также и в классах Ыгя(ген, оя$тя$геат и я(гя(геап). Для вывода в символьный массив используйте следующую основную форму конструктора класса оя(гя(геап): озггзггеагп поток взвода (сваг "буФер, зккеавзкзе размер, орепводе режим = коз:; оШ) ) Здесь поток вывода — это поток, который связывается с массивом, заданным через указатель буфер.

Параметр размер определяет размер массива. Параметррежим по умолчанию обычно настроен на обычный режим вывода, но вы можете задать любой, определенный в классе юя, флаг режима вывода. (За подробностями обращайтесь к главе 9.) После того как массив открыт для вывода, символы будут выводиться в массив вплоть до его заполнения. Переполнения массива произойти не может.

Любая попытка переполнения массива приведет к ошибке ввода/вывода. Для определения количества записанных в массив символов используйте приведенную ниже функцию-член рсовпЦ): ~пс рооипС () Функция должна вызываться только в связи с потоком и возвращает она число символов, записанных в массив, включая нулевой символ завершения. Чтобы открыть массив для ввода из него, используйте следующую форму конструктора класса Мгя(геап): гяегвггеатп поток ввода (согяг скзг збуФер) Здесь буфер — это указатель на массив, из которого будут вводиться символы.

Поток ввода обозначен через волок заоди. При считывании входной информации из массива, функция ео)О возвращает истину при достижении конца массива. Чтобы открыть массив для ввода/вывода, используйте следующую форму конструктора класса я(гя(геап): зггзггсагп поток ввод вывод (сваг *буФзр, зекезвзкзе размер, орепвоое режим = Ьоз:: (и ~ л.оз:: осс) ) Глава 18, Пространства имен идругие темы 413 Здесь латок ввод вывод — это поток ввода/вывода, для которого в качестве объекта ввода/вывода через указатель бу4ер задан массив длиной в размер СИМВОЛОВ. Важно помнить, что все описанные ранее функции ввода/вывода работают и с массивами, включая функции ввода/вывода двоичных файлов и функции произвольного доступа. Применение потоковых классов для символьных массивов резко осуждается стандартом Б1апггаге( С++.

Это означает, что хотя сейчас потоковые классы для символьных массивов достаточно широко распространены, в будущих версиях языка С++ они могут не поддерживаться. Для решения тех же задач, для которых предназначены символьные массивы, стандартом Вгапг(аггг С+ч. рекомендуются классы-контейнеры, описанные в главе 14.

1. В этом простом примере показано, как открыть массив для вывода и записать в него данные: // Короткий пример вывода в массив ()1пс1ие(е <1оясгеып> ()апс1пе(е <зсгясгеата> ия1пк патпеярасе ясб; 1п( ткаап () ( сваг Ьиг(255]: 11 буфер для вывода овегясгеап~ оясг(Ьай, ягкеоГ боб)," 11 открытие массива для вывода оясг « "вводувывод через массивы работает с потоками~о"; оялг « "точно так же, как при обычном вводетвыводетп " « 100; оялг « ' ' « 123,23 « '~П'; можно также использовать манипуляторы оясг « )тех « 100 « или флаги формата ожег.зебр(воя::ясаепс111с); оялг « 123.23 « '~п'т ожег « елея; вывод на экран полученной строки сон « Ьпг; ге игп 0; 414 Самоучитель С++ В результате выполнения программы на экран выводится следующее: вводУвывод через массивы работает с потоками точно так же, как при обычном вводе/выводе 100 123.23 64 01.2323е+02 Как вы могли заметить, перегруженные операторы ввода/вывода, встроенные манипуляторы ввода/вывода, функции-члены и флаги формата полностью доступны и для ввода/вывода с использованием массивов.

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

2. Пример ввода данных из массива: // Пример ввода из массива $1пс1цое <1оеггеащ> 111пс1цс1е <яСгяггеав> ця)пя патеярасе яМ; 1п1 та1п 11 1 сваг Ьн1[) = "Привет 100 123.125 а"; 1еггяггеат 1вгг(ьц~); // открытие массива для ввода из него 1нл 1; с1таг агг180); 11оаВ 1; с1таг су 1ягт » ясг » 1 » 1 » с; соня « ясг « ' ' « 1 « ' « .; соня « ' ' « с « '~п'р Эта программа считывает и воспроизводит данные, содержащиеся в массиве, заданном указателем Ънй 3. Запомните, что массив для ввода, после того как он связан с потоком, становится похожим на файл. Например, в следующей программе для считывания содержимого массива по адресу ЬвГ используются функции еоГО и яеЦ): рлава 13. дространства имен и другие темы У~ демонстрация того факта, что функции еой(» и дек() работают с вводом/выводом, основанным на использовании массивов * ()фпс1пбе <1озггеав> ()1пс1ибе <зггзггеал> из1пд патпеярасе япб; 1пс табп () сЬаг Ьпг [] = "Привет 100 123,125 а"; 1зьгзггеал~ 1зьг(ьпй); сЬаг с; жЬ11е((1згг.еой()) бзгг.дег(с»; фт (! 1ЗЬг.

ЕОй () ) СОПЬ «С; геспгп 0; 4. В следуюцей програилче ввлтолняется ввод данных из массива и вывод данных в массив: Демонстрация ввода/вывода с использованием массивов ()1пс1пбе <1озсгеаа> ()1пс1ибе <зггзлгеатв> иябпд патеярасе ясб; ='пг шаз.п() сЬаг 1оЬий[255)," зсгзггеат )оясг (1оЬпй, ябзеой 1оЬпй); 1оясг « "Это проверка~п"; 1оясг « 100 « Ьех « ' ' « 100 « епбя; сиаг зГг[ВО]; гп 1озГг.декаде(згг, 79); // считывает строку вплоть до ~п 1оякг » бес » 1; // считывает 100 соус « ясг « ' ' « -' « 1оя"г » Ьех » соиС « Ьех« 1; геб тгп 0; Самоучитель Эта программа сначала записывает информацию в массив по адресу 1оЬШ, а затем считывает ее обратно.

Сначала с помощью функции цейвеО строка "Это проверка" целиком считывается в массив, далее считывается десятичное значение 100, а затем шестнадцатеричное Ох64. 1. Модифицируйте пример 1 так, чтобы перед завершением программы на эк- ран было выведено число символов, записанных в массив по адресу ЬвГ. 2. Используя массивы в качестве объектов ввода/вывода, напишите программу для копирования содержимого одного массива в другой. (Конечно это не самый эффективный способ решения подобной задачи.) 3. Используя массивы в качестве обьектов ввода/вывода, напишите программу для преобразования строки, содержащей значение с плавающей точкой, в число с плавающей точкой.

Теперь вам необходимо выполнить следующие упражнения и ответить на вопросы. 1. Что отличает статическую переменную-член от других переменных- членов? 2. Какой заголовок необходимо включить в вашу программу, чтобы в каче- стве объектов ввода/вывода можно было использовать массивы". 3. Не считая того, что при вводе/выводе через массивы память используется в качестве устройства ввода и/или вывода, имеется ли еще какое либо отличие между таким и "обычным" вводом/выводом? 4. Для заданной функции совп$егО напишите инструкцию, позволяющую компилировать эту функцию для сборки с языком С.

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

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

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

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