- •6 Глава 1
- •12 Глава 1
- •14 Глава 1
- •16 Глава 1
- •18 Глава 1
- •20 Глава 1
- •22 Глава 1
- •24 Глава 1
- •26 Глава 1
- •31 Глава 1
- •34 Глава 2
- •36 Глава 2
- •Puc. 2.4. Дополнительные опции консольного приложения Win32
- •38 Глава 2
- •40 Глава 2
- •42 Глава 2
- •44 Глава 2
- •48 Глава 2
- •50 Глава 2
- •52 Глава 2
- •54 Глава 2
- •56 Глава 2
- •58 Глава 2
- •60 Глава 2
- •62 Глава 2
- •64 Глава 2
- •66 Глава 2
- •68 Глава 2
- •70 Глава 2
- •74 Глава 2
- •76 Глава 2
- •79 Глава 2
- •82 Глава 2
- •84 Глава 2
- •86 Глава 2
- •88 Глава 2
- •92 Глава 2
- •94 Глава 2
- •96 Глава 2
- •98 Глава 2
- •103 Глава 2
- •105 Глава 2
- •107 Глава 2
- •110 Глава 2
- •115 Глава 3
- •119 Глава 3
- •121 Глава 3
- •123 Глава 3
- •125 Глава 3
- •129 Глава 3
- •131 Глава 3
- •133 Глава 3
- •139 Глава 3
- •141 Глава 3
- •143 Глава 3
- •145 Глава 3
- •148 Глава 3
- •150 Глава 3
- •155 Глава 3
- •165 Глава 4
- •168 Глава 4
- •170 Глава 4
- •173 Глава 4
- •175 Глава 4
- •178 Глава 4
- •184 Глава 4
- •186 Глава 4
- •188 Глава 4
- •190 Глава 4
- •192 Глава 4
- •194 Глава 4
- •198 Глава 4
- •201 Глава 5
- •203 Глава 5
- •205 Глава 5
- •207 Глава 5
- •213 Глава 5
- •217 Глава 5
- •219 Глава 5
- •221 Глава 5
- •223 Глава 5
- •225 Глава 5
- •227 Глава 5
- •232 Глава 5
- •234 Глава 5
- •236 Глава 5
103 Глава 2
может принимать при ее вызове ноль, один или более аргументов. Когда вам нужно передать более одного аргумента, их следует разделять запятыми. Функции вывода класса Console заслуживают более детального рассмотрения, поэтому я опишу их подробно.
Вывод командной строки C++/CLI
Вы увидели в последнем примере, как можно использовать методы
идля вывода строк или других элементов данных
в командную строку. Между их скобками можно поместить переменную любого из ти- пов, которые вам встречались в этой книге до сих пор, и ее значение будет выведено в командную строку. Например, вы можете написать следующие операторы для выво- да выходной информации о количестве пакетов:
Выполнение этих операторов даст следующий вывод:
Весь вывод уместился в одной строке, потому что в первых двух операторах ис- пользуется функция Write (), которая не выводит символ новой строки после дан- ных. В последнем операторе применяется функция WriteLine (), которая при выводе присоединяет символ новой строки к переданным данным, поэтому весь последую- щий вывод окажется в новой строке.
Выглядит довольно утомительным использовать целых три оператора, чтобы по- лучить одну строку вывода, поэтому не удивительно, что предусмотрен и другой спо- соб. Это средство связано с форматированием вывода в командной строке программ .NET Framework, и об этом мы поговорим в следующем разделе.
Специфика C++/CLI — форматирование вывода
Обе функции — и|, и— имеют сред-
ства управления форматом вывода, и этот механизм работает совершенно одинаково в обеих функциях. Проще всего понять его на примере. Во-первых, посмотрим, как можно одним оператором получить вывод, который в предыдущем примере форми- ровался тремя операторами:
Здесь второй оператор даст тот же вывод, что вы видели в предыдущем разделе. Первый аргумент— строка Ь"Имеется {0} пакетов. ", в кото-
рой фрагмент " {0}" отмечает место, куда будет помещен второй аргумент. Этот фраг- мент заключает в себе форматную строку, применяемую для вывода второго аргумен- та, хотя в данном случае она предельно проста, и состоит из одного нуля. Аргументы, следующие в функцииза первым, пронумерованы по поряд-
ку, начиная с нуля:
Данные,
переменные
и
вычисления
Таким образом, ноль между фигурными скобками в предыдущем фрагменте кода указывает на то, что аргумент packageCount должен заменить {0} в строке-аргументе при выводе ее на консоль.
Если вы захотите вывести еще и вес пакетов вместе с числом, то можете написать так:
Теперь оператор вывода имеет три аргумента, и ко второму и третьему в формат- ной строке выполняется обращение по номерам 0 и 1 соответственно. Поэтому это даст следующий вывод:
Вы также можете написать оператор, который выведет два последних аргумента в обратном порядке, как здесь:
Теперь в форматной строке 0 ссылается на переменную packageWeight, а 1 — на packageCount; вывод получится точно таким же, как прежде.
У вас также есть возможность специфицировать, как будут представлены данные в командной строке. Предположим, что вам нужно вывести значение с плавающей точ- кой packageWeight с двумя десятичными разрядами после точки. Это можно сделать следующим образом:
В подстроке 1: F2 двоеточие отделяет значение индекса — 1, идентифицирующее аргумент, от следующей за ним спецификации формата — F2. Буква F в спецификации формата указывает, что вывод должен быть в форме "±ddd.dd..." (где d представляет десятичную цифру), а 2 — количество разрядов после точки. Вывод этого оператора будет таким:
Вообще вы можете писать спецификацию формата в виде {n,w:Ахх}, где п — зна- чение индекса, указывающее номер аргумента, следующего за форматной строкой, w — необязательная спецификация ширины поля, А — односимвольная спецификация формата значения, а хх — необязательное одно- или двузначное число, задающее точ- ность вывода значения. Спецификация ширины поля — целое со знаком. Значение будет выровнено вправо в поле w, если ширина положительна, и влево — если отрица- тельна. Если значение занимает меньше знаков, чем указано в w, то вывод дополняет- ся пробелами; если значение не помещается в ширину w, то спецификация ширины игнорируется. Вот еще один пример:
Количество пакетов выводится в поле шириной 3 знака, а вес — в поле шириной 5, поэтому в результате получим: