Читайте также: |
|
Когда мы используем библиотечные функции, то нам необходимо включить в программу соответствующий заголовочный файл. Это делается директивой #include. Так в языке С для включения заголовочного файла для функций ввода-вывода мы пишем:
#include <stdio.h>
Здесь, stdio.h -имя файла, используемого, например, семейством функций printf.
Первоначально в C++ использовался такой же стиль включения заголовков, т.е. включались заголовочные файлы. Стандарт C++ пока поддерживает этот С-стиль включения .h -файлов, создаваемых программистом, и для совместимости.
Однако, введен и новый вид заголовков, который используется стандартной библиотекой C++. Эти заголовки не специфицируют имена файлов. Вместо этого в директиве #include просто указываются стандартные идентификаторы, которые могут быть отображены компилятором в файлы, но не обязательно. Заголовки нового стиля есть некая абстракция, которая гарантирует, что подходящие прототипы и определения, требуемые библиотекой C++ будут известны в программе. Соответственно, не требуется указывать .h- расширение файла, а только имя заголовка в угловых скобках. Например, < iostream > < fstream > < vector > < string >. Поскольку С++ содержит всю библиотеку функций языка С, то допускается использование ассоциированных с этой библиотекой заголовочных файлов старого вида. Но вместо них можно использовать и заголовки нового стиля, просто добавляя префикс “c” к имени соответствующего файла и опуская расширение .h. Например, для файла math.h получим <cmath>, для string.h - <cstring>. Стандарт рекомендует применять нотацию в новом стиле.
Полезность программы "Hello Billy" весьма сомнительна. Мы написали несколько строк кода, откомпилировали программу и запустили ее на выполнение, чтобы увидеть на экране пару-тройку слов. Проще было бы написать их прямо с клавиатуры. Для того чтобы продвинуться дальше и писать программы, которые будут выполнять более полезную работу, нам нужно ввести некоторые дополнительные понятия. Но, пока, обсудим еще пару простых примеров.
Первый взгляд на ввод/вывод. // Липман
Частью стандартной библиотеки С++ является библиотека iostream, которая реализована как иерархия классов и обеспечивает базовые возможности ввода/вывода.
Ввод с терминала, называемый стандартным вводом, “привязан” к предопределенному объекту cin. Вывод на терминал, или стандартный вывод, привязан к объекту cout. Третий предопределенный объект, cerr, представляет собой стандартный вывод для ошибок. Обычно он используется для вывода сообщений об ошибках и предупреждений.
Для использования библиотеки ввода/вывода необходимо включить соответствующий заголовочный файл:
#include <iostream>
Чтобы значение поступило в стандартный вывод или в стандартный вывод для ошибок используется операция <<:
int v1, v2;
//...
cout << "сумма v1 и v2 = ";
cout << v1 + v2;
cout << "\n";
Последовательность "\n" представляет собой символ перехода на новую строку. Вместо "\n" мы можем использовать предопределенный манипулятор endl.
cout << endl;
Манипулятор endl не просто выводит данные (символ перехода на новую строку), но и производит сброс буфера вывода.
Операции вывода можно сцеплять. Так, три строки в предыдущем примере заменяются одной:
cout << "сумма v1 и v2 = " << v1 + v2 << "\n";
Для чтения значения из стандартного потока ввода применяется операция ввода (>>, мы пока не понимаем, что означает строка кода string file_name;, но догадываемся, что объявлен объект типа string):
string file_name;
//...
cout << "Введите имя файла: ";
cin >> file_name;
Операции ввода, как и операции вывода, можно сцеплять:
string ifile, ofile;
//...
cout << "Введите имя входного и выходного файлов: ";
cin >> ifile >> ofile;
Заметим, что последовательность инструкций
string word;
while (cin >> word)
//...
считывает по одному слову из стандартного ввода до тех пор, пока не считаны все слова. Выражение
(cin >> word)
возвращает false, когда достигнут конец файла или будет выполнен ошибочный ввод.
Хотя нет особого смысла читать после достижения EOF для реального файла, но читать опять с консоли после ввода EOF, может оказаться разумным. Функция clear потока cin позволяет это сделать:
while (cin >> x) {
... // цикл чтения до тех пор пока не встретится EOF (или ошибка)
cin.clear(); // разрешает продолжить ввод
cin >> n;
Вот пример простой программы, считывающей по одному слову из cin и выводящей их в cout:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string word;
while (cin >> word)
cout << "Прочитано слово: " << word << "\n";
cout << "Все слова прочитаны!";
}
Если запустить приведенную выше программу и набрать с клавиатуры какое-либо предложение, то после завершения ввода, мы увидим на экране терминала следующее:
Все слова прочитаны!
Дата добавления: 2015-11-16; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лекц. №1. ВВЕДЕНИЕ | | | Некоторые общие замечания и пропедевтика. |