﻿<?php
echo "<p class=bmenu><span class=MsoHyperlink><a href=\"#_Toc219968062\">Глава 8\n";
echo "Потоки<span style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>219</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968063\">8.1 Введение<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>219</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968064\">8.2 Вывод<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>220</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968065\">8.2.1 Вывод\n";
echo "Встроенных Типов<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'> </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>220</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968066\">8.2.2 Вывод\n";
echo "Определяемых Пользователем Типов<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'> </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>221</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968067\">8.2.3\n";
echo "Некоторые Подробности Разработки<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>222</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968068\">8.2.4\n";
echo "Форматированный Вывод<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>223</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968069\">8.2.5\n";
echo "Виртуальная Функция Вывода<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>226</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968070\">8.3 Файлы и Потоки<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>227</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968071\">8.3.1\n";
echo "Инициализация Потоков Вывода<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>227</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968072\">8.3.2\n";
echo "Закрытие Потоков Вывода<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>228</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968073\">8.3.3\n";
echo "Открытие Файлов<span style='color:windowtext;display:none;text-decoration:none'> </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>228</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968074\">8.3.4\n";
echo "Копирование Потоков<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'> </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>229</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968075\">8.4 Ввод<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>229</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968076\">8.4.1 Ввод\n";
echo "Встроенных Типов<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'> </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>230</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968077\">8.4.2\n";
echo "Состояния Потока<span style='color:windowtext;display:none;text-decoration:\n";
echo "none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>231</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968078\">8.4.3 Ввод\n";
echo "Типов, Определяемых Пользователем<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>232</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><a href=\"#_Toc219968079\">8.4.4\n";
echo "Инициализация Потоков Ввода<span style='color:windowtext;display:none;\n";
echo "text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>233</span></a></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968080\">8.5 Работа со Строками<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>235</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968081\">8.6 Буферизация<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>235</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968082\">8.7 Эффективность<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>237</span></a></span></span></p>\n";
echo "\n";
echo "<p class=menu><span class=MsoHyperlink><span style='font-variant:normal !important;\n";
echo "text-transform:uppercase'><a href=\"#_Toc219968083\">8.8 Упражнения<span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>_ </span><span\n";
echo "style='color:windowtext;display:none;text-decoration:none'>237</span></a></span></span></p>\n";
echo "\n";
echo "<h1><a name=\"_Toc219968062\">Глава 8 Потоки</a></h1>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:72.6pt;margin-bottom:.0001pt;text-indent:217.8pt;text-autospace:\n";
echo "none'>``bad input char:\n";
echo ".Ppm(*=P!..*@Z9A*)5!!!!!&quot;syui!!!&quot;!Mp#V6P?p8`;!4lf&amp;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:171.6pt;text-autospace:none'>- сообщение об ошибке\n";
echo "(сокращенное)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Язык С++ не обеспечивает средств для ввода/вывода.\n";
echo "Ему это и не нужно. Такие средства легко и элегантно можно соз­дать с помощью\n";
echo "самого языка. Описанная здесь стандартная биб­лиотека потокового ввода/вывода\n";
echo "обеспечивает гибкий и эффек­тивный, с гарантией типа, метод обработки символьного\n";
echo "ввода целых чисел, чисел с плавающей точкой и символьных строк, а также простую\n";
echo "модель ее расширения для обработки типов, опре­деляемых пользователем. Ее\n";
echo "пользовательский интерфейс нахо­дится в &lt;stream.h&gt;. В этой главе\n";
echo "описывается сама библиотека, некоторые способы ее применения и методы, которые\n";
echo "использова­лись при ее реализации.</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968063\">8.1 Введение</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Разработка и реализация стандартных средств\n";
echo "ввода/вывода для языка программирования зарекомендовала себя как заведомо\n";
echo "трудная работа. Традиционно средства ввода/вывода разрабаты­вались\n";
echo "исключительно для небольшого числа встроенных типов данных. Однако в С++\n";
echo "программах обычно используется много ти­пов, определяемых пользователем, и\n";
echo "нужно обрабатывать ввод и вывод также и значений этих типов. Очевидно, средство\n";
echo "вво­да/вывода должно быть простым, удобным, надежным в употребле­нии,\n";
echo "эффективным и гибким, и ко всему прочему полным. Ничье решение еще не смогло\n";
echo "угодить всем, поэтому у пользователя должна быть возможность задавать\n";
echo "альтернативные средства вво­да/вывода и расширять стандартные средства\n";
echo "ввода/вывода при­менительно к требованиям приложения.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>С++ разработан так, чтобы у пользователя была возмож­ность\n";
echo "определять новые типы столь же эффективные и удобные, сколь и встроенные типы.\n";
echo "Поэтому обоснованным является требо­вание того, что средства ввода/вывода для\n";
echo "С++ должны обеспе­чиваться в С++ с применением только тех средств, которые дос­тупны\n";
echo "каждому программисту. Описываемые здесь средства ввода/ вывода представляют\n";
echo "собой попытку ответить на этот вызов.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Средства ввода/вывода &lt;stream.h&gt; связаны\n";
echo "исключительно с обработкой преобразования типизированных объектов в последо­вательности\n";
echo "символов и обратно. Есть и другие схемы ввода/вы­вода, но эта является\n";
echo "основополагающей в системе UNIX, и большая часть видов двоичного ввода/вывода\n";
echo "обрабатывается че­рез рассмотрение символа просто как набора бит, при этом его\n";
echo "общепринятая связь с алфавитом игнорируется. Тогда для прог­раммиста ключевая\n";
echo "проблема заключается в задании соответствия между типизированным объектом и\n";
echo "принципиально нетипизирован­ной строкой.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Обработка и встроенных и определяемых пользователем ти­пов\n";
echo "однородным образом и с гарантией типа достигается с по­мощью одного\n";
echo "перегруженного имени функции для набора функций вывода. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>put(cerr,&quot;x\n";
echo "= &quot;); // cerr - поток вывода ошибок</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>put(cerr,x);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>put(cerr,&quot;\n&quot;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Тип параметра определяет то, какая из функций put\n";
echo "будет вызываться для каждого параметра. Это решение применялось в нескольких\n";
echo "языках. Однако ему недостает лаконичности. Перег­рузка операции &lt;&lt;\n";
echo "значением &quot;поместить в&quot; дает более хорошую запись и позволяет\n";
echo "программисту выводить ряд объектов одним оператором. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cerr &lt;&lt; &quot;x = &quot;\n";
echo "&lt;&lt; x &lt;&lt; &quot;\n&quot;;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>где cerr - стандартный поток вывода ошибок.\n";
echo "Поэтому, ес­ли x является int со значением 123, то этот оператор напеча­тает в\n";
echo "стандартный поток вывода ошибок</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>x = 123</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>и символ новой строки. Аналогично, если X\n";
echo "принадлежит определенному пользователем типу complex и имеет значение (1,</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:0cm;text-autospace:none'>2.4), то приведенный выше оператор\n";
echo "напечатает в cerr</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>x = (1,2.4)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Этот метод можно применять всегда, когда для x\n";
echo "определе­на операция &lt;&lt;, и пользователь может определять операцию\n";
echo "&lt;&lt; для нового типа.</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968064\">8.2 Вывод</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>В этом разделе сначала обсуждаются средства\n";
echo "форматного и бесформатного вывода встроенных типов, потом приводится стан­дартный\n";
echo "способ спецификации действий вывода для определяемых пользователем типов.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968065\">8.2.1 Вывод Встроенных Типов</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Класс ostream определяется вместе с операцией\n";
echo "&lt;&lt; (&quot;по­местить в&quot;) для обработки вывода встроенных типов:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class ostream (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; operator&lt;&lt;(char*);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; operator&lt;&lt;(int i) (* return *this&lt;&lt;long(i);\n";
echo "*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; operator&lt;&lt;(long);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>ostream&amp;\n";
echo "operator&lt;&lt;(double);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; put(char);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Функция operator&lt;&lt; возвращает ссылку на\n";
echo "ostream, для ко­торого она была вызвана, чтобы к ней можно было применять\n";
echo "другой ostream. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cerr &lt;&lt; &quot;x = &quot;\n";
echo "&lt;&lt; x;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>где x является int, будет\n";
echo "интерпретироваться как:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>(cerr.operator&lt;&lt;(&quot;x\n";
echo "= &quot;)).operator&lt;&lt;(x);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>В частности, отсюда следует, что когда один\n";
echo "оператор вы­вода печатает несколько элементов, они будут печататься в ожидаемом\n";
echo "порядке: слева направо. Наличие operator&lt;&lt;, которая получает int,\n";
echo "является избыточным, поскольку int может неявно преобразовываться в long. С\n";
echo "другой стороны, int может преоб­разовываться также и в double. Наличие\n";
echo "ostream::operator&lt;&lt;(int) позволяет избежать этой неоднознач­ности. Для\n";
echo "печати символов в виде символов предоставляется функция ostream::put(char), а\n";
echo "ostream::operator&lt;&lt;(int) печа­тает их целые значения.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968066\">8.2.2 Вывод Определяемых Пользователем Типов</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Рассмотрим определяемый\n";
echo "пользователем тип:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class complex (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>double re, im;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>complex(double\n";
echo "r = 0, double i = 0) (* re=r; im=i; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-right:10.55pt;text-align:center;\n";
echo "text-autospace:none'><span lang=EN-US>friend double real(complex&amp; a) (*\n";
echo "returna.re; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-top:0cm;margin-right:10.55pt;\n";
echo "margin-bottom:13.3pt;margin-left:0cm;text-align:center;text-autospace:none'><span\n";
echo "lang=EN-US>friend double real(complex&amp; a) (* returna.re; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>friend complex operator+(complex, complex);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>friend complex operator-(complex, complex);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>friend complex operator*(complex, complex);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>friend complex operator/(complex, complex);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// ...</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Операцию &lt;&lt; для нового типа complex можно\n";
echo "определить так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; operator&lt;&lt;(ostream&amp;s, complex z)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>return s &lt;&lt; &quot;(&quot; &lt;&lt; real(z) &lt;&lt;\n";
echo "&quot;,&quot; &lt;&lt; imag(z) &lt;&lt; &quot;)&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>и использовать точно так же, как\n";
echo "для встроенного типа:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>complex x(1,2);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;x = &quot; &lt;&lt; x &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>получая при этом</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>x = (1,2)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Определение действия вывода для определяемого\n";
echo "пользова­телем типа не требует ни модификации описания класса ostream, ни\n";
echo "доступа к структуре данных (скрытой), которую этот класс поддерживает. Очень\n";
echo "удачно, что имеет место первое, потому что описание класса ostream находится в\n";
echo "стандартных заголо­вочных файлах, к которым у обычного пользователя нет доступа\n";
echo "на запись. Последнее также важно, потому что обеспечивает за­щиту от случайной\n";
echo "порчи структуры данных. Это также позволяет менять реализацию ostream не влияя\n";
echo "на пользовательские прог­раммы.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968067\">8.2.3 Некоторые Подробности Разработки</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Операция вывода используется, чтобы избежать той\n";
echo "многос­ловности, которую дало бы использование функции вывода. Но почему\n";
echo "&lt;&lt;?</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Возможности изобрести новый лексический символ нет (#6.2).\n";
echo "Операция присваивания была кандидатом одновременно и на ввод, и на вывод, но\n";
echo "оказывается, большинство людей пред­почитают, чтобы операция ввода отличалась\n";
echo "от операции вывода. Кроме того, = не в ту сторону связывается (ассоциируется),\n";
echo "то есть cout=a=b означает cout=(a=b).</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Делались попытки использовать операции &lt; и &gt;, но\n";
echo "значе­ния &quot;меньше&quot; и &quot;больше&quot; настолько прочно вросли в\n";
echo "сознание людей, что новые операции ввода/вывода во всех реальных слу­чаях\n";
echo "оказались нечитаемыми. Помимо этого, &quot;&lt;&quot; находится на большинстве\n";
echo "клавиатур как раз на &quot;,&quot;, и у людей получаются операторы вроде\n";
echo "такого:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt; x , y\n";
echo ", z; </span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Для таких операторов непросто выдавать хорошие сообщения об ошибках.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Операции &lt;&lt; и &gt;&gt; к такого рода проблемам не\n";
echo "приводят, они асимметричны в том смысле, что их можно проассоциировать с\n";
echo "&quot;в&quot; и &quot;из&quot;, а приоритет &lt;&lt; достаточно низок, чтобы\n";
echo "можно было не использовать скобки для арифметических выражений в роли\n";
echo "операндов. Например<span lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;a*b+c=&quot; &lt;&lt; a*b+c &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Естественно, при написании выражений, которые\n";
echo "содержат операции с более низкими приоритетами, скобки использовать надо.\n";
echo "Например<span lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;a^b!c=&quot; &lt;&lt; (a^b!c) &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Операцию левого сдвига тоже можно применять в\n";
echo "операторе вывода:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;a&lt;&lt;b=&quot; &lt;&lt; (a&lt;&lt;b) &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>В С++ нет выражений с символьными значениями, в\n";
echo "частнос­ти, '\n' является целым (со значением 10, если используется набор\n";
echo "символов ASCII), поэтому</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;x = &quot; &lt;&lt; x &lt;&lt; '\n';</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>напечатает число 10, а не ожидаемый символ новой\n";
echo "строки. Эту и аналогичные проблемы можно сгладить, определив несколь­ко\n";
echo "макросов (в которых используются стандартные имена симво­лов ASСII):</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>#define sp &lt;&lt; &quot; &quot;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>#define ht &lt;&lt; &quot;\t&quot;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>#define nl\n";
echo "&lt;&lt; &quot;\n&quot;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Теперь предыдущий пример\n";
echo "запишется в виде:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;x = &quot; &lt;&lt; x nl;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Для печати символов предоставляются функции\n";
echo "ostream::put (char) и chr(int) (см. #8.2.4). Хотя в некоторых кругах не­синтаксические\n";
echo "макросы считаются худшим видом макросов, мне они нравятся.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Рассмотрим примеры:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>cout &lt;&lt;\n";
echo "x &lt;&lt; &quot; &quot; &lt;&lt; y &lt;&lt; &quot; &quot; &lt;&lt; z &lt;&lt;\n";
echo "&quot;\n&quot;;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;x = &quot; &lt;&lt; x &lt;&lt; &quot;, y = &quot; &lt;&lt; y &lt;&lt;\n";
echo "&quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Люди находят их трудно читаемыми из-за большого\n";
echo "числа кавычек и того, что операция вывода внешне выглядит слишком непривычно.\n";
echo "Здесь могут помочь приведенные выше макросы и несколько отступов:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cout &lt;&lt; x sp &lt;&lt; y sp &lt;&lt; z nl;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cout &lt;&lt; &quot;x = &quot; &lt;&lt; x</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:46.2pt;text-autospace:none'><span lang=EN-US>&lt;&lt;\n";
echo "&quot;, y = &quot; &lt;&lt; y nl;</span></p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968068\">8.2.4 Форматированный Вывод</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Пока &lt;&lt; применялась только для\n";
echo "неформатированного выво­да, и на самом деле в реальных программах она именно\n";
echo "для это­го главным образом и применяется. Помимо этого существует также\n";
echo "несколько форматирующих функций, создающих представле­ние своего параметра в\n";
echo "виде строки, которая используется для вывода. Их второй (необязательный)\n";
echo "параметр указывает, сколь­ко символьных позиций должно использоваться.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>char*\n";
echo "oct(long, int=0);  // восьмеричное представление</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>char* dec(long,\n";
echo "int=0);  // десятичное представление</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>char*\n";
echo "hex(long, int=0);  // шестнадцатиричное представление</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char* chr(int, int=0);   // </span>символ</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>char*\n";
echo "str(char*, int=0); // </span>строка</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Если не задано поле нулевой длины, то будет производить­ся усечение или\n";
echo "дополнение; иначе будет использоваться столь­ко символов (ровно), сколько\n";
echo "нужно. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>cout &lt;&lt;\n";
echo "&quot;dec(&quot; &lt;&lt; x</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:46.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>&lt;&lt; &quot;) = oct(&quot; &lt;&lt; oct(x,6)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:46.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>&lt;&lt; &quot;) = hex(&quot; &lt;&lt; hex(x,4)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:46.2pt;text-autospace:none'>&lt;&lt; &quot;)&quot;;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>Если x==15, то в результате\n";
echo "получится:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>dec(15) = oct(\n";
echo "17) = hex( f);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Можно также использовать строку\n";
echo "в общем формате:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>char*\n";
echo "form(char* format ...);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:0cm;text-align:justify;text-indent:33.0pt;text-autospace:\n";
echo "none'>cout&lt;&lt;form() эквивалентно применению стандартной функции вывода\n";
echo "языка C printf()*. form() возвращает строку, получае­мую в результате\n";
echo "преобразования и форматирования ее парамет­ров, которые стоят после первого\n";
echo "управляющего параметра - строки формата format. Строка формата состоит из\n";
echo "объектов двух типов: обычных символов, которые просто копируются в по­ток\n";
echo "вывода, и спецификаций преобразования, каждая из которых влечет преобразование\n";
echo "и печать следующего из параметров. Каж­дая спецификация преобразования\n";
echo "начинается с символа %. Нап­ример:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-autospace:none'>--------------------</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>* Объяснение того, как применяются строки формата,\n";
echo "- это слегка отредактированный вариант спецификации printf(). <span lang=EN-US>(</span>прим<span\n";
echo "lang=EN-US>. </span>автора<span lang=EN-US>)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-top:13.3pt;margin-right:10.55pt;\n";
echo "margin-bottom:13.3pt;margin-left:0cm;text-align:center;text-autospace:none'><span\n";
echo "lang=EN-US>cout&lt;&lt;form(&quot;there were %d members\n";
echo "present&quot;,no_of_members);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Здесь %d указывает, что no_of_members должно\n";
echo "рассматри­ваться как int и печататься в виде соответствующей последова­тельности\n";
echo "десятичных цифр. Если<span lang=EN-US> no_of_members==127, </span>вывод бу<span\n";
echo "lang=EN-US>­</span>дет такой<span lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'><span lang=EN-US>there were 127\n";
echo "members present</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Множество спецификаций преобразования довольно\n";
echo "велико и обеспечивает высокую степень гибкости. После % может стоять:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>- необязательный знак минус, который задает\n";
echo "выравнивание преобразованного значения влево в указанном поле;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>d \n";
echo "необязательная строка цифр,  задающая ширину поля.  Если</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-autospace:none'>преобразованное\n";
echo "значение имеет меньше цифр,  чем  ширина</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-autospace:none'>поля, оно\n";
echo "будет дополняться пробелами слева (или справа,</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>если был задан индикатор выравнивания влево) до заполне­ния всей ширины\n";
echo "поля; если ширина поля начинается с ну­ля, то вместо дополнения пробелами будет\n";
echo "делаться допол­нение нулями;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>. необязательная точка, для отделения ширины поля\n";
echo "от следующей строки цифр;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>d \n";
echo "необязательная строка цифр,   специфицирующая  точность,</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-autospace:none'>которая\n";
echo "задает   число  цифр  после десятичной точки для</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>преобразований e и f или\n";
echo "печатаемых символов для строки;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>* в ширине поля или точности вместо строки цифр\n";
echo "может сто­ять *. В этом случае ширина поля и точность задается це­лым\n";
echo "параметром;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>h \n";
echo "необязательный символ h; указывает на то,  что идущие за</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>ним d, o, x или y соответствуют параметру короткое це­лое;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>l необязательный символ h; указывает на то, что\n";
echo "идущие за ним d, o, x или y соответствуют параметру длинное целое;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>%  указывает,\n";
echo "что  должен быть напечатан символ %,  никакие</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>параметры при этом не затрагиваются;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>c  символ,\n";
echo "указывающий,  какой  тип  преобразования  должен</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>применяться. Символы преобразования и их значения тако­вы:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:19.8pt;text-autospace:none'>d целый параметр преобразуется в\n";
echo "десятичную запись;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:19.8pt;text-autospace:none'>o целый параметр преобразуется в\n";
echo "восьмеричную запись;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:19.8pt;text-autospace:none'>x целый параметр преобразуется в\n";
echo "шестнадцатиричную запись;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>f параметр float или double преобразуется в десятичную запись вида\n";
echo "[-]ddd.ddd, где число, задаваемое цифрами d после десятичной точки,\n";
echo "эквивалентно спецификации точ­ности для параметра. Если точность опущена,\n";
echo "дается шесть цифр; если точность явно задана как 0, то не печатается десятичная\n";
echo "точка и не печатается ни одной цифры;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>e параметр float или double преобразуется в десятичную запись вида\n";
echo "[-]d.ddde+dd, где перед десятичной точкой стоит одна цифра, а число, задаваемое\n";
echo "цифрами после де­сятичной точки, эквивалентно спецификации точности для\n";
echo "параметра; когда точность опущена, выдается шесть цифр;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>g параметр float или double печатается в том из видов d, f или e, который\n";
echo "обеспечивает полную точность при мини­мальной затрате места;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-autospace:none'>c печатается\n";
echo "символьный параметр, пустые символы игнори­руются;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>s параметр воспринимается как строка (указатель на сим­вол), и печатаются\n";
echo "символы из строки до пустого символа или до тех пор, пока не будет достигнуто\n";
echo "число символов, указанное спецификацией точности; но если точность равна нулю,\n";
echo "печатаются все символы до пустого;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>u беззнаковый целый параметр преобразуется в десятичную запись.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-autospace:\n";
echo "none'>Несуществующая или недостаточная ширина поля никогда не приводит к\n";
echo "обрезанию поля; дополнение поля записи имеет место только в том случае, если\n";
echo "указанная ширина поля превышает фактическую ширину.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>Вот более сложный пример:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char* src_file_name;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int line;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char* line_format = &quot;\n#line %d \&quot;%s\&quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>//...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cout &lt;&lt; &quot;int a;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cout &lt;&lt; form(line_format,line,src_file_name);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "&quot;int b;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:0cm;text-autospace:none'>который печатает</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>int a;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>#line 13 &quot;</span>С<span lang=EN-US>++/main.c&quot;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>int b;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Применение form() небезопасно в смысле того, что не\n";
echo "вы­полняется проверка типа. Вот, например, хорошо хорошо извест­ный способ\n";
echo "получить непредсказуемый вывод и/или дамп (core dump):</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char x;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout&lt;&lt;form(&quot;bad\n";
echo "input char: %s&quot;,x);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Правда, она дает большую гибкость в том виде,\n";
echo "который хорошо знаком программистам на C. Потоковый вывод можно сме­шивать с\n";
echo "выводом в стиле printf().</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>В настоящее время нет полностью удовлетворительных средств,\n";
echo "обеспечивающих форматированный вывод типов, опреде­ляемых пользователем* В\n";
echo "частности, вероятно нужно будет найти стандартный способ передавать функции\n";
echo "вывода для определяемо­го пользователем типа информацию, которая позволит ей\n";
echo "опреде­лить пространственные ограничения, вид заполнения, левое или правое\n";
echo "выравнивание и т.п. такими, какими они определяются в ее вызове. Вполне\n";
echo "осуществимый, но не идеальный подход состо­ит в том, чтобы снабжать\n";
echo "определяемый пользователем тип функ­циями, которые порождают соответствующее\n";
echo "строковое представ­ление объекта, для которого они вызываются, аналогично\n";
echo "форматирующим функциям oct(), hex() и т.д. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class complex (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>float re,im;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char* string(char* format)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(* return form(format,re,im); *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>cout &lt;&lt;\n";
echo "z.string(&quot;(%.3f,%.3f)&quot;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Память для хранения строк, которые возвращают\n";
echo "form(), hex() и т.п., берется из одного статически размещаемого цик­лического\n";
echo "буфера, поэтому не имеет смысла сохранять указа­тель, возвращаемый любой из\n";
echo "этих функций, для дальнейшего ис­пользования. Указываемые символы будут\n";
echo "меняться.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968069\">8.2.5 Виртуальная Функция Вывода</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Иногда функция вывода должна быть virtual.\n";
echo "Рассмотрим пример класса shape, который дает понятие фигуры (#1.18):</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class shape (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-indent:26.4pt;text-autospace:\n";
echo "none'><span lang=EN-US>virtual void draw(ostream&amp; s); // </span>рисует<span\n";
echo "lang=EN-US> &quot;this&quot; </span>на<span lang=EN-US> &quot;s&quot; *);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class circle : public shape (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int radius;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>void draw(ostream&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>То есть, круг имеет все признаки фигуры и может\n";
echo "обраба­тываться как фигура, но имеет также и некоторые специальные свойства,\n";
echo "которые должны учитываться при его обработке.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Чтобы поддерживать для таких классов стандартную пара­дигму\n";
echo "вывода, операция &lt;&lt; определяется так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream&amp; operator&lt;&lt;(ostream&amp; s, shape* p)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>p-&gt;draw(s);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>return s;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Если next - итератор типа определенного в #7.3.3,\n";
echo "то список фигур распечатывается например так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>while ( p =\n";
echo "next() ) cout &lt;&lt; p;</span></p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968070\">8.3 Файлы и Потоки</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Потоки обычно связаны с файлами. Библиотека потоков\n";
echo "соз­дает стандартный поток ввода cin, стандартный поток вывода cout и\n";
echo "стандартный поток ошибок cerr. Программист может отк­рывать другие файлы и\n";
echo "создавать для них потоки.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968071\">8.3.1 Инициализация Потоков Вывода</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>ostream имеет конструкторы:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class ostream (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream(streambuf* s); // </span>связывает с буфером потока</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>ostream(int\n";
echo "fd); // связывание для файла</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>ostream(int\n";
echo "size, char* p); // связывает с вектором</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Главная работа этих конструкторов - связывать с\n";
echo "потоком буфер. streambuf - класс, управляющий буферами; он описывает­ся в #8.6,\n";
echo "как и класс filebuf, управляющий streambuf для файла. Класс filebuf является производным\n";
echo "от класса streambuf.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Описание стандартных потоков вывода cout и cerr, которое\n";
echo "находится в исходных кодах библиотеки потоков ввода/вывода, выглядит так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>// описать\n";
echo "подходящее пространство буфера</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>char\n";
echo "cout_buf[BUFSIZE]</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>// сделать\n";
echo "&quot;filebuf&quot; для управления этим пространством</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>//связать его\n";
echo "с UNIX'овским потоком вывода 1 (уже открытым)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>filebuf\n";
echo "cout_file(1,cout_buf,BUFSIZE);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-right:10.55pt;text-align:center;\n";
echo "text-autospace:none'>// сделать ostream, обеспечивая пользовательский интерфейс</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>ostream\n";
echo "cout(&amp;cout_file);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>char\n";
echo "cerr_buf[1];</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>// длина 0,\n";
echo "то есть, небуферизованный</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>//\n";
echo "UNIX'овский поток вывода 2 (уже открытый)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>filebuf\n";
echo "cerr_file(2,cerr_buf,0);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>ostream\n";
echo "cerr(&amp;cerr_file);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Примеры двух других конструкторов ostream можно\n";
echo "найти в #8.3.3 и #8.5.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968072\">8.3.2 Закрытие Потоков Вывода</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Деструктор для ostream сбрасывает буфер с помощью откры­того члена\n";
echo "функции ostream::flush():</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream::~ostream()</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>flush(); // </span>сброс</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Сбросить буфер можно также и\n";
echo "явно. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cout.flush();</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968073\">8.3.3 Открытие Файлов</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Точные детали того, как открываются и закрываются\n";
echo "файлы, различаются в разных операционных системах и здесь подробно не\n";
echo "описываются. Поскольку после включения &lt;stream.h&gt; стано­вятся доступны\n";
echo "cin, cout и cerr, во многих (если не во всех) программах не нужно держать код\n";
echo "для открытия файлов. Вот, од­нако, программа, которая открывает два файла,\n";
echo "заданные как параметры командной строки, и копирует первый во второй:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>#include\n";
echo "&lt;stream.h&gt;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>void error(char* s, char* s2)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cerr &lt;&lt; s &lt;&lt; &quot; &quot; &lt;&lt; s2 &lt;&lt;\n";
echo "&quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>exit(1);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>main(int argc, char* argv[])</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>(*</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>if (argc != 3)\n";
echo "error(&quot;неверное число параметров&quot;,&quot;&quot;);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf f1;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (f1.open(argv[1],input) == 0)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-indent:26.4pt;text-autospace:\n";
echo "none'>error(&quot;не могу открыть входной файл&quot;,argv[1]); istream\n";
echo "from(&amp;f1);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf f2;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (f2.open(argv[2],output) == 0)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-indent:26.4pt;text-autospace:\n";
echo "none'>error(&quot;не могу создать выходной файл&quot;,argv[2]); ostream\n";
echo "to(&amp;f2);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char ch;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>while\n";
echo "(from.get(ch)) to.put(ch);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (!from.eof() !! to.bad())</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>error(&quot;случилось\n";
echo "нечто странное&quot;,&quot;&quot;);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Последовательность действий при создании ostream\n";
echo "для именованного файла та же, что используется для стандартных потоков: (1)\n";
echo "сначала создается буфер (здесь это делается пос­редством описания filebuf); (2)\n";
echo "затем к нему подсоединяется файл (здесь это делается посредством открытия файла\n";
echo "с помощью функции filebuf::open()); и, накрнец, (3) создается сам ostream с\n";
echo "filebuf в качестве параметра. Потоки ввода обраба­тываются аналогично.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>Файл может открываться в одной\n";
echo "из двух мод:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>enum open_mode\n";
echo "(* input, output *);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Действие filebuf::open() возвращает 0, если не\n";
echo "может от­крыть файл в соответствие с требованием. Если пользователь пытается\n";
echo "открыть файл, которого не существует для output, он будет создан.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Перед завершением программа проверяет, находятся ли по­токи\n";
echo "в приемлемом состоянии (см. #8.4.2). При завершении программы открытые файлы\n";
echo "неявно закрываются.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Файл можно также открыть одновременно для чтения и запи­си, но в тех\n";
echo "случаях, когда это оказывается необходимо, пара­дигма потоков редко оказывается\n";
echo "идеальной.  Часто лучше расс­матривать такой файл как вектор (гигантских\n";
echo "размеров).  Можно определить тип, который позволяет программе обрабатывать файл\n";
echo "как вектор, см. Упражнения 8- 10.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968074\">8.3.4 Копирование Потоков</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Есть возможность копировать\n";
echo "потоки. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cout = cerr;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>В результате этого получаются две переменные, ссылающие­ся на один и тот\n";
echo "же поток.  Гавным образом это бывает полезно для того, чтобы сделать\n";
echo "стандартное имя вроде cin ссылающимся на что-то другое (пример этого см. в\n";
echo "#3.1.6)</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968075\">8.4 Ввод</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Ввод аналогичен выводу. Имеется класс istream,\n";
echo "который предоставляет операцию &gt;&gt; (&quot;взять из&quot;) для небольшого\n";
echo "мно­жества стандартных типов. Функция operator&gt;&gt; может опреде­ляться для\n";
echo "типа, определяемого пользователем.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968076\">8.4.1 Ввод Встроенных Типов</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Класс istream определяется так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class istream (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>public:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(char*); // </span>строка</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(char&amp;); // </span>символ</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(short&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(int&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(long&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(float&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(double&amp;);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// ...</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Функции ввода определяются в\n";
echo "таком духе:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; istream::operator&gt;&gt;(char&amp; c);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>(*</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// пропускает\n";
echo "пропуски</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>int a;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// неким\n";
echo "образом читает символ в &quot;a&quot;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>c = a;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*) </p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Пропуск определяется как стандартнчй пропуск в C,\n";
echo "через вызов isspase() в том виде, как она определена в &lt;ctype.h&gt; (пробел,\n";
echo "табуляция, символ новой строки, перевод формата и возврат каретки).</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>В качестве альтернативы можно использовать функции get():</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class istream (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; get(char&amp; c); // char</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; get(char* p, int n, int ='\n'); // </span>строка</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Они обрабатывают символы пропуска так же, как\n";
echo "остальные символы. Функция istream::get(char) читает один символ в свой\n";
echo "параметр; другая istream::get читает не более n символов в вектор символов,\n";
echo "начинающийся в p. Необязательный третий па­раметр используется для задания\n";
echo "символа остановки (иначе, терминатора или ограничителя), то есть этот символ\n";
echo "читаться не будет. Если будет встречен символ ограничитель, он оста­нется как\n";
echo "первый символ потока. По умолчанию вторая функция get будет читать самое\n";
echo "большее n символов, но не больше чем одну строку, '\n' является ограничителем\n";
echo "по умолчанию. Необя­зательный третий параметр задает символ, который читаться\n";
echo "не будет. Например:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cin.get(buf,256,'\t');</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>будет читать в buf не более 256 символов, а если\n";
echo "встре­тится табуляция ('\t'), то это приведет к возврату из get. В этом случае\n";
echo "следующим символом, который будет считан из cin, будет '\t'.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Стандартный заголовочный файл &lt;ctype.h&gt; определяет\n";
echo "нес­колько функций, которые могут оказаться полезными при осу­ществлении ввода:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isalpha(char) // 'a'..'z' 'A'..'Z'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isupper(char) // 'A'..'Z'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int islower(char) // 'a'..'z'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isdigit(char) // '0'..'9'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isxdigit(char) // '0'..'9' 'a'..'f' 'A'..'F'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'>int\n";
echo "isspase(char) // ' ' '\t' возврат новая строка</p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-right:10.55pt;text-align:center;\n";
echo "text-autospace:none'>// перевод формата</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'>int\n";
echo "iscntrl(char) // управляющий символ</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:145.2pt;margin-bottom:.0001pt;text-autospace:none'>// (ASCII\n";
echo "0..31 и 127)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'>int\n";
echo "ispunct(char) // пунктуация:ни один из вышеперечисленных</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isalnum(char) // isalpha() ! isdigit()</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isprint(char) // </span>печатаемый<span lang=EN-US>: ascii '\n";
echo "'..'-'</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:6.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int isgraph(char) // isalpha() ! isdigit() ! ispunct()</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:6.6pt;text-autospace:none'><span lang=EN-US>int isascii(char\n";
echo "c) (* return 0&lt;=c &amp;&amp; c&lt;=127; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Все кроме isascii() реализуются внешне одинаково, с\n";
echo "при­менением символа в качестве индекса в таблице атрибутов символов. Поэтому\n";
echo "такие выражения, как</p>\n";
echo "\n";
echo "<p class=MsoNormal align=center style='margin-top:13.3pt;margin-right:10.55pt;\n";
echo "margin-bottom:13.3pt;margin-left:0cm;text-align:center;text-autospace:none'><span\n";
echo "lang=EN-US>(('a'&lt;=c &amp;&amp; c&lt;='z') !! </span>('A'&lt;=c &amp;&amp;\n";
echo "c&lt;='Z')) // алфавитный</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>не только утомительно пишутся и чреваты ошибками\n";
echo "(на ма­шине с набором символов EBCDIC оно будет принимать неалфавит­ные\n";
echo "символы), они также и менее эффективны, чем применение стандартной функции:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>isalpha(c)</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968077\">8.4.2 Состояния Потока</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Каждый поток (istream или ostream) имеет\n";
echo "ассоциированное с ним состояние, и обработка ошибок и нестандартных условий\n";
echo "осуществляется с помощью соответствующей установки и проверки этого состояния.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Поток может находиться в одном\n";
echo "из следующих состояний:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>enum\n";
echo "stream_state (* _good, _eof, _fail, _bad *);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Если состояние _good или _eof, значит последняя\n";
echo "операция ввода прошла успешно. Если состояние _good, то следующая опе­рация\n";
echo "ввода может пройти успешно, в противном случае она за­кончится неудачей.\n";
echo "Другими словами, применение операции ввода к потоку, который не находится в\n";
echo "состоянии _good, является пустой операцией. Если делается попытка читать в\n";
echo "переменную v, и операция оканчивается неудачей, значение v должно ос­таться\n";
echo "неизменным (оно будет неизменным, если v имеет один из тех типов, которые\n";
echo "обрабатываются функциями членами istream или ostream). Отличие между\n";
echo "состояниями _fail и _bad очень незначительно и предсавляет интерес только для\n";
echo "разработчиков операций ввода. В состоянии _fail предполагается, что поток не\n";
echo "испорчен и никакие символы не потеряны. В состоянии _bad может быть все что\n";
echo "угодно.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Состояние потока можно проверять\n";
echo "например так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>switch (cin.rdstate()) (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>case _good:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// последняя\n";
echo "операция над cin прошла успешно</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>break;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case _eof:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// конец\n";
echo "файла</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>break;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>case _fail:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// некоего\n";
echo "рода ошибка форматирования</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// возможно,\n";
echo "не слишком плохая</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>break;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case _bad:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>// возможно,\n";
echo "символы cin потеряны</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>break;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Для любой переменной z типа, для которого определены\n";
echo "операции &lt;&lt; и &gt;&gt;, копирующий цикл можно написать так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>while\n";
echo "(cin&gt;&gt;z) cout &lt;&lt; z &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Например, если z - вектор символов, этот цикл будет\n";
echo "брать стандартный ввод и помещать его в стандартный вывод по одному слову (то\n";
echo "есть, последовательности символов без пробе­ла) на строку.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Когда в качестве условия используется поток, происходит\n";
echo "проверка состояния потока, и эта проверка проходит успешно (то есть, значение\n";
echo "условия не ноль) только если состояние _good. В частности, в предыдущем цикле\n";
echo "проверялось состояние istream, которое возвращает cin&gt;&gt;z. Чтобы\n";
echo "обнаружить, почему цикл или проверка закончились неудачно, можно исследовать\n";
echo "состояние. Такая проверка потока реализуется операцией преоб­разования\n";
echo "(#6.3.2).</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Делать проверку на наличие ошибок после каждого ввода или\n";
echo "вывода действительно не очень удобно, и обычно источником ошибок служит\n";
echo "программист, не сделавший этого в том месте, где это существенно. Например,\n";
echo "операции вывода обычно не про­веряются, но они могут случайно не сработать.\n";
echo "Парадигма пото­ка ввода/вывода построена так, чтобы когда в С++ появится (если\n";
echo "это произойдет) механизм обработки исключительных ситу­аций (как средство языка\n";
echo "или как стандартная библиотека), его будет легко применить для упрощения и\n";
echo "стандартизации обработ­ки ошибок в потоках ввода/вывода.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968078\">8.4.3 Ввод Типов, Определяемых Пользователем</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Ввод для пользовательского типа может определяться точно так же, как\n";
echo "вывод, за тем исключением, что для операции ввода важно, чтобы второй параметр\n";
echo "был ссылочного типа. Например<span lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream&amp; operator&gt;&gt;(istream&amp; s, complex&amp; a)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>/*</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>форматы ввода\n";
echo "для complex; &quot;f&quot; обозначает float:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>f</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>( f )</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>( f , f )</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*/</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>double re = 0, im = 0;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>char c = 0;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>s &gt;&gt; c;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (c == '(') (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>s &gt;&gt; re &gt;&gt; c;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (c == ',') s &gt;&gt; im &gt;&gt; c;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (c != ')') s.clear(_bad); // </span>установить<span lang=EN-US>\n";
echo "state</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>else (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>s.putback(c);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>s &gt;&gt; re;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>if (s) a = complex(re,im);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>return s;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Несмотря на то, что не хватает кода обработки\n";
echo "ошибок, большую часть видов ошибок это на самом деле обрабатывать бу­дет.\n";
echo "Локальная переменная c инициализируется, чтобы ее значе­ние не оказалось\n";
echo "случайно '(' после того, как операция окон­чится неудачно. Завершающая проверка\n";
echo "состояния потока гарантирует, что значение параметра a будет изменяться только\n";
echo "в том случае, если все идет хорошо.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Операция установки состояния названа clear() (очистить),\n";
echo "потому что она чаще всего используется для установки состоя­ния потока заново\n";
echo "как _good. _good является значением пара­метра по умолчанию и для\n";
echo "istream::clear(), и для ostream::clear().</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-align:justify;text-indent:33.0pt;\n";
echo "text-autospace:none'>Над операциями ввода надо поработать еще. Было бы, в\n";
echo "частности, замечательно, если бы можно было задавать ввод в терминах образца\n";
echo "(как в языках Snobol и Icon), а потом прове­рять, прошла ли успешно вся\n";
echo "операция ввода. Такие операции должны были бы, конечно, обеспечивать некоторую\n";
echo "дополнитель­ную буферизацию, чтобы они могли воссанавливать поток ввода в его\n";
echo "исходное состояние после неудачной попытки распознавания.</p>\n";
echo "\n";
echo "<h3><a name=\"_Toc219968079\">8.4.4 Инициализация Потоков Ввода</a></h3>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Естественно, тип istream, так же как и ostream,\n";
echo "снабжен конструктором:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>class istream (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// ...</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream(streambuf* s, int sk =1, ostream* t =0);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream(int size, char* p, int sk =1);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream(int fd, int sk =1, ostream* t =0);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Параметр sk задает, должны пропускаться пропуски\n";
echo "или нет. Параметр t (необязательный) задает указатель на ostream, к которому\n";
echo "прикреплен istream. Например, cin прикреплен к cout; это значит, что перед тем,\n";
echo "как попытаться читать симво­лы из своего файла, cin выполняет</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>cout.flush(); // пишет буфер\n";
echo "вывода</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>С помощью функции istream::tie() можно прикрепить\n";
echo "(или открепить, с помощью tie(0)) любой ostream к любому istream. Например<span\n";
echo "lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int y_or_n(ostream&amp; to, istream&amp; from)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>/*</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:46.2pt;margin-bottom:.0001pt;text-autospace:none'>&quot;to&quot;,\n";
echo "получает отклик из &quot;from&quot;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*/</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream* old = from.tie(&amp;to);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>for (;;) (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>cout &lt;&lt; &quot;</span>наберите<span lang=EN-US> Y </span>или<span\n";
echo "lang=EN-US> N: &quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char ch = 0;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:66.0pt;text-autospace:none'><span lang=EN-US>if\n";
echo "(!cin.get(ch)) return 0;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>if (ch !=\n";
echo "'\n') (* // пропускает остаток строки</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char ch2 = 0;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>while (cin.get(ch2) &amp;&amp; ch2 != '\n') ;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>switch (ch) (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case 'Y':</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case 'y':</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case '\n':</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'>from.tie(old);\n";
echo "// восстанавливает старый tie</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>return 1;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case 'N':</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>case 'n':</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>from.tie(old); // </span>восстанавливает старый<span lang=EN-US> tie</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'>return 0;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>default:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:92.4pt;margin-bottom:.0001pt;text-autospace:none'>cout &lt;&lt;\n";
echo "&quot;извините, попробуйте еще раз: &quot;;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Когда используется буферизованный ввод (как это\n";
echo "происхо­дит по умолчанию), пользователь не может набрав только одну букву\n";
echo "ожидать отклика. Система ждет появления символа новой строки. y_or_n() смотрит\n";
echo "на первый символ строки, а остальные игноирует.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Символ можно вернуть в поток с помощью функции istream:: putback(char).\n";
echo "Это позволяет программе &quot;заглядывать вперед&quot; в поток ввода.</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968080\">8.5 Работа со Строками</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Можно осуществлять действия, подобные вводу/выводу,\n";
echo "над символьным вектором, прикрепляя к нему istream или ostream. Например, если\n";
echo "вектор содержит обычную строку, завершающуюся нулем, для печати слов из этого\n";
echo "вектора можно использовать приведенный выше копирующий цикл:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>void word_per_line(char v[], int sz)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>/*</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>печатет\n";
echo "&quot;v&quot; размера &quot;sz&quot; по одному слову на строке</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>*/</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>istream ist(sz,v); // </span>сделать<span lang=EN-US> istream </span>для<span\n";
echo "lang=EN-US> v</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>char b2[MAX];\n";
echo "// больше наибольшего слова</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>while (ist&gt;&gt;b2) cout &lt;&lt; b2 &lt;&lt; &quot;\n&quot;;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>Завершающий нулевой символ в этом случае интерпретирует­ся как символ\n";
echo "конца файла.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:0cm;margin-bottom:.0001pt;text-indent:33.0pt;text-autospace:\n";
echo "none'>В помощью ostream можно отформатировать сообщения, кото­рые не нужно\n";
echo "печатать тотчас же:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>char* p = new char[message_size];</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>ostream ost(message_size,p);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>do_something(arguments,ost);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>display(p);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Такая операция, как do_something, может писать в\n";
echo "поток ost, передавать ost своим подоперациям и т.д. с помощью стан­дартных\n";
echo "операций вывода. Нет необходимости делать проверку на переполнение, поскольку\n";
echo "ost знает свою длину и когда он будет переполняться, он будет переходить в\n";
echo "состояние _fail. И, на­конец, display может писать сообщения в\n";
echo "&quot;настоящий&quot; поток вы­вода. Этот метод может оказаться наиболее\n";
echo "полезным, чтобы справляться с ситуациями, в которых окончательное отображение\n";
echo "данных включает в себя нечто более сложное, чем работу с тра­диционным\n";
echo "построчным устройством вывода. Например, текст из ost мог бы помещаться в\n";
echo "располагающуюся где-то на экране об­ласть фиксированного размера.</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968081\">8.6 Буферизация</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>При задании операций ввода/вывода мы никак не\n";
echo "касались типов файлов, но ведь не все устройства можно рассматривать одинаково\n";
echo "с точки зрения стратегии буферизации. Например, для ostream, подключенного к\n";
echo "символьной строке, требуется буфери­зация другого вида, нежели для ostream,\n";
echo "подключенного к фай­лу. С этими пробемами можно справиться, задавая различные\n";
echo "бу­ферные типы для разных потоков в момент инициализации (обратите внимание на\n";
echo "три конструктора класса ostream). Есть только один набор операций над этими\n";
echo "буферными типами, поэто­му в функциях ostream нет кода, их различающего. Однако\n";
echo "функ­ции, которые обрабатывают переполнение сверху и снизу, вирту­альные. Этого\n";
echo "достаточно, чтобы справляться с необходимой в данное время стратегией\n";
echo "буферизации. Это также служит хорошим примером применения виртуальных функций\n";
echo "для того, чтобы сде­лать возможной однородную обработку логически эквивалентных\n";
echo "средств с различной реализацией. Описание буфера потока в &lt;stream.h&gt;\n";
echo "выглядит так:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>struct streambuf (* //\n";
echo "управление буфером потока</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>char* base;           //     начало\n";
echo "буфера</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>char* pptr;            //     следующий\n";
echo "свободный char</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>char* qptr;            //     следующий\n";
echo "заполненный char</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>char* eptr;            //     один\n";
echo "из концов буфера</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>char alloc;             //     буфер,\n";
echo "выделенный с помощью new</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// Опустошает\n";
echo "буфер:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-indent:26.4pt;text-autospace:\n";
echo "none'>// Возвращает EOF при ошибке и 0 в случае успеха virtual int overflow(int\n";
echo "c =EOF);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// Заполняет\n";
echo "буфер</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// Возвращет\n";
echo "EOF при ошибке или конце ввода,</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>// </span>иначе следующий<span lang=EN-US> char</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>virtual int\n";
echo "underflow();</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>int snextc()\n";
echo "// берет следующий char</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-indent:26.4pt;text-autospace:\n";
echo "none'><span lang=EN-US>return (++qptr==pptr) ? underflow() : *qptr&amp;0377; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>// ...</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>int allocate() //выделяет\n";
echo "некоторое пространство буфера</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>streambuf() (* /* ... */*)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>streambuf(char* p, int l) (* /* ... </span>*/*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>~streambuf()\n";
echo "(* /* ... */*)</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*);</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Обратите внимание, что здесь определяются\n";
echo "указатели, не­обходимые для работы с буфером, поэтому обычные посимвольные\n";
echo "действия можно определить (только один раз) в виде максималь­но эффективных\n";
echo "inline- функций. Для каждой конкретной страте­гии буферизации необходимо\n";
echo "определять только функции перепол­нения overflow() и underflow(). Например<span\n";
echo "lang=EN-US>:</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>struct filebuf\n";
echo ": public streambuf (*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int fd; // </span>дескриптор файла</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>char opened; //\n";
echo "</span>файл открыт</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int overflow(int c =EOF);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>int underflow();</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'>// ...</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// Открывает\n";
echo "файл:</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// если не\n";
echo "срабатывает, то возвращет 0,</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:66.0pt;margin-bottom:.0001pt;text-autospace:none'>// в случае\n";
echo "успеха возвращает &quot;this&quot;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf* open(char *name, open_mode om);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>int close() (*\n";
echo "/* ... */ *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf() (* opened = 0; *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf(int nfd) (* /* ... */ *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>filebuf(int nfd, char* p, int l) : (p,l) (* /*...*/ *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>~filebuf() (* close(); *)</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'><span lang=EN-US>*);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int filebuf::underflow() // </span>заполняет буфер из<span\n";
echo "lang=EN-US> fd</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>(*</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>if (!opened !!\n";
echo "allocate()==EOF) return EOF;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>int count = read(fd, base, eptr-base);</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:39.6pt;text-autospace:none'><span lang=EN-US>if (count &lt;\n";
echo "1) return EOF;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>qptr = base;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'><span\n";
echo "lang=EN-US>pptr = base + count;</span></p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:39.6pt;margin-bottom:.0001pt;text-autospace:none'>return *qptr\n";
echo "&amp; 0377;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:13.2pt;text-autospace:none'>*)</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968082\">8.7 Эффективность</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-right:10.55pt;text-align:justify;text-indent:\n";
echo "33.0pt;text-autospace:none'>Можно было бы ожидать, что раз ввод/вывод\n";
echo "&lt;stream.h&gt; определен с помощью общедоступных средств языка, он будет ме­нее\n";
echo "эффективен, чем встроенное средство. На самом деле это не так. Для действий\n";
echo "вроде &quot;поместить символ в поток&quot; использу­ются inline-функции,\n";
echo "единственные необходимые на этом уровне вызовы функций возникают из-за\n";
echo "переполнения сверху и снизу. Для простых объектов (целое, строка и т.п.)\n";
echo "требуется по од­ному вызову на каждый. Как выясняется, это не отличается от\n";
echo "прочих средств ввода/вывода, работающих с объектами на этом уровне.</p>\n";
echo "\n";
echo "<h2><a name=\"_Toc219968083\">8.8 Упражнения</a></h2>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>1. (*1.5) Считайте файл чисел с плавающей точкой,\n";
echo "составьте из пар считанных чисел комплексные числа и выведите комплексные\n";
echo "числа.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>2. (*1.5) Определите тип name_and_address\n";
echo "(имя_и_адрес). Определите для него &lt;&lt; и &gt;&gt;. Скопируйте поток\n";
echo "объектов name_and_address.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>3. (*2) Постройте несколько функций для запроса и\n";
echo "чтения различного вида информации. Простейший пример - функция y_or_n() в\n";
echo "#8.4.4. Идеи: целое, число с плавающей точ­кой, имя файла, почтовый адрес,\n";
echo "дата, личные данные и т. д. Постарайтесь сделать их защищенными от дурака.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>4. (*1.5) Напишите программу, которая печатает (1)\n";
echo "все бук­вы в нижнем регистре, (2) все буквы, (3) все буквы и цифры, (4) все\n";
echo "символы, которые могут встречаться в идентификаторах С++ на вашей системе, (5)\n";
echo "все символы пунктуации, (6) целые значения всех управляющих симво­лов, (7) все\n";
echo "символы пропуска, (8) целые значения всех символов пропуска, и (9) все\n";
echo "печатаемые символы.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>5. (*4) Реализуйте стандартную библиотеку\n";
echo "ввода/вывода C (&lt;stdio.h&gt;) с помощью стандартной библиотеки ввода/выво­да\n";
echo "С++ (&lt;stream.h&gt;).</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>6. (*4) Реализуйте стандартную библиотеку\n";
echo "ввода/вывода С++ (&lt;stream.h&gt;) с помощью стандартной библиотеки ввода/вы­вода\n";
echo "C (&lt;stdio.h&gt;).</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-indent:-19.8pt;text-autospace:\n";
echo "none'>7. (*4) Реализуйте стандартные библиотеки C и С++ так, что­бы они могли\n";
echo "использоваться одновременно.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>8. (*2) Реализуйте класс, для которого []\n";
echo "перегружено для реализации случайного чтения символов из файла.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>9. (*3) Как Упражнение 8, только сделайте, чтобы\n";
echo "[] работа­ло и для чтения, и для записи. Подсказка: сделайте, что­бы []\n";
echo "возвращало объект &quot;дескрипторного типа&quot;, для кото­рого присваивание\n";
echo "означало бы присвоить файлу через дескриптор, а неявное преобразование в char\n";
echo "означало бы чтение из файла через дескриптор.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-indent:-19.8pt;text-autospace:\n";
echo "none'>10.(*2) Как Упражнение 9, только разрешите [] индексировать записи\n";
echo "некоторого вида, а не символы.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:13.2pt;margin-bottom:.0001pt;text-autospace:none'>11.(*3)\n";
echo "Сделайте обобщенный вариант класса, определенного в</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "13.3pt;margin-left:33.0pt;text-autospace:none'>Упражнении 10.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:0cm;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>12.(*3.5) Разработайте и реализуйте операцию ввода\n";
echo "по со­поставлению с образцом. Для спецификации образца исполь­зуйте строки\n";
echo "формата в духе printf. Должна быть возмож­ность попробовать сопоставить со\n";
echo "вводом несколько образцов для нахождения фактического формата. Можно было бы\n";
echo "вывести класс ввода по образцу из istream.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>13.(*4) Придумайте (и реализуйте) вид образцов,\n";
echo "которые намного лучше.</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>&nbsp;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>&nbsp;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>&nbsp;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>&nbsp;</p>\n";
echo "\n";
echo "<p class=MsoNormal style='margin-top:13.3pt;margin-right:10.55pt;margin-bottom:\n";
echo "0cm;margin-left:33.0pt;margin-bottom:.0001pt;text-align:justify;text-indent:\n";
echo "-19.8pt;text-autospace:none'>&nbsp;</p>\n";
echo "\n";
?>