Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

58 Глава 2

Базовые операции ввода-вывода

Здесь вы только поверхностно ознакомитесь с вводом и выводом в "родном" С++ — настолько, чтобы использовать его в примерах в процессе дальнейшего изучения языка. Это совсем не трудно, даже наоборот. А при программировании для Windows оно и вовсе не понадобится. Ввод и вывод С++ вращается вокруг понятия потоков данных; данные можно вставлять в выходной поток и принимать из входного. Вы уже видели, что стандартный выходной поток ISO/ANSI С++ в командную строку на экране называется cout. Дополняющий его входной поток с клавиатуры известен под именем cin.

Ввод с клавиатуры

Вы получаете ввод с клавиатуры через поток cin, используя для этого операцию извлечения из потока ». Чтобы прочитать два целых значения с клавиатуры в пере- менные numl и num2, можно написать следующий оператор:

Операция извлечения » "указывает" в направлении, куда передаются данные — в данном случае, из cin в каждую из двух переменных по очереди. Любые ведущие про- белы пропускаются, и первое целое значение, введенное с клавиатуры, поступает в переменную numl. Так происходит потому, что оператор ввода выполняется слева на- право. Любые пробелы, следующие за numl, игнорируются, и второе введенное целое значение читается в num2. Между следующими друг за другом значениями должны быть какие-нибудь пробельные символы, чтобы их можно было разделить. Операция потокового ввода завершается, когда вы нажимаете клавишу <Enter>, и выполнение программы продолжается со следующего оператора. Конечно, могут возникать ошиб- ки, если вы введете некорректные данные, но я предполагаю, что вы всегда все дела- ете правильно!

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

последняя строка читает целое значение в numl, затем значение с плавающей точкой в factor и, наконец, еще одно целое в num2.

Вывод в командную строку

Вы уже видели в рассмотренных выше примерах вывод в командную строку, но я все равно хочу вернуться к этой теме. Вывод информации на дисплей осуществляют- ся способом, дополняющим ввод. Как вы уже видели, поток вывода называется cout, и для передачи данных в него используется операция вставки «. Эта операция также "указывает" в направлении движения данных. Вы уже применяли ее для вывода тек- стовой строки, заключенной в кавычки. Я могу продемонстрировать процесс вывода значения переменной на примере простой программы.

Данные, переменные и вычисления 59

Предположим, что вы уже создали новый пустой проект, добавили к нему новый исходный файл и построили исполняемую программу. Ниже показан код, который необходимо поместить в исходный файл после создания проекта Ех2_02.

Описание полученных результатов

Первый оператор в теле main () объявляет и инициализирует две целочисленных переменных — numl и num2. За ним следуют два оператора вывода, первый из кото- рых перемещает позицию экранного курсора на новую строку. Поскольку операторы вывода выполняются слева направо, второй оператор отображает значение перемен- ной numl, за которым следует значение num2.

Когда вы скомпилируете и запустите приведенный выше код, то получите на экра- не следующий вывод:

12345678

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

Форматирование вывода

Проблему, связанную с отсутствием пробелов между значениями, можно испра- вить довольно просто — вставив пробел в поток вывода между двумя значениями. Это можно сделать, заменив следующий оператор вашей оригинальной программы:

Просто подставьте вместо него оператор:

Конечно, если у вас несколько строк вывода, и вы хотите выровнять колонки, то вам понадобятся какие-то дополнительные возможности, поскольку вы не знаете, сколько знаков будет в каждом значении. С этой ситуацией можно справиться, ис- пользуя то, что называется манипуляторами. Манипулятор модифицирует способ управления выводом данных в поток (или вводом из потока).