Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Новые” заголовочные файлы.

Читайте также:
  1. Форма 5. Дополнительные файлы.

Когда мы используем библиотечные функции, то нам необходимо включить в программу соответствующий заголовочный файл. Это делается директивой #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. ВВЕДЕНИЕ| Некоторые общие замечания и пропедевтика.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)