Программирование >>  Элементы языков с и с++ 

1 ... 66 67 68 [ 69 ] 70 71 72 ... 200


а из строки string. Это позволяет выделять в строке различные группы данных совершенно разных типов и помещать их в отдельные переменные.

П Функция gets ().

Формат: gets(s);

Вводит строку символов с клавиатуры и записывает ее в строку s, которая может быть объявлена как char *s или char s[].

П Функция puts ().

Формат:

puts(s);

Выводит содержимое строки s на устройство стандартного вывода (экран) (s может быть объявлена как char *s или char s [ ]).

Ввод/вывод в С++ Общие положения

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

Чтобы начать писать программу с использованием ввода/вывода на языке С++, следует обязательно выполнить в программе #inciude <f stream>.

Класс fstream является потомком классов istream, ostream. Эти же классы являются родителями классов ifstream, ofstream. Класс fstream используется для организации ввода/вывода (т. е. чтения/записи) в один и тот же файл. Классы ifstream, ofstream используются ДЛЯ организации, соответственно, ввода (т. е. чтения файла) и вывода (т. е. записи в файл).

В свою очередь, экземплярами классов istream, ostream являются cin, cout, cerr, С помощью которых осуществляется так называемый стандартный ввод/вывод - ввод со стандартного вводного устройства (которым по умолчанию является клавиатура) и вывод на стандартное выводное устройство (которым по умолчанию является экран). Таким образом, включение в про-



фамму класса fstream оказывается достаточным для организации как стан-I дартного, так и файлового ввода/вывода.

Шчовыи ввод/вывод организован с помощью переопределенных в поточных шссах операций включения (<<) и извлечения (>>). Ранее мы видели, что это операции сдвига влево и сдвига вправо битов в переменной типа int, но в 1 поточных классах С-н- они обрели новую функциональность.

Чтобы работать с файлом, его сначала следует открыть: связать со специальной структурой, в которой задаются характеристики файла (размер буфера ввода/вывода, состояние файла, последняя прочитанная запись и т. п.). Связь эта выполняется с помошью функции open {), входящей в один из классов, ; который определяет ввод/вывод (f stream, istream, ostream). Поэтому, чтобы выполнить такую функцию, следует сначала создать экземпляр соответст-щего класса (для получения доступа к этой функции). Если мы, например, хотим выполнять вывод в файл (т. е. запись в него), то следует создать экземпляр класса ostream: ostream exp; И затем выполнить функцию ехр.ореп (). В скобках должны быть параметры этой функции: имя открываемого файла и способ открытия файла, в котором задаются сведения о том, как собирается пользователь работать с файлом (читать его, писать в него, или делать что-то еще).

После того как файл открыт, собственно для чтения или записи уже исполь-з)ют операции включения/извлечения ( , >>). Если использовать пример сэкземпляром ехр класса ostream, то можно записать так:

ехр строка текста i j endl;

I Здесь!, j - некоторые переменные (например, int i; float j,-), endl - I конец вывода и переход на новую строку.

После того как работа с файлом закончена, следует закрыть файл, чтобы разорвать связь с той структурой, с которой файл был связан при его открытии. Это необходимо, чтобы дать возможность другим файлам открываться . >готакт выполняется с помощью метода close () того же экземпляра класса, который мы создавали, чтобы выполнить функцию open (). В нашем случае медовало бы написать: ехр.close ();,

Ввод/вывод

с использованием разных классов

Итак, мы определили, что поточные классы - это поставщики инструментов [ля работы с файлами.



В поточных классах хранятся:

П структуры, обеспечивающие открытие/закрытие файлов;

П функции (методы) открытия/закрытия файлов;

П другие функции и данные, обеспечивающие, как мы увидим далее, собственно ввод/вывод.

Пространства имен

Многие серьезные приложения состоят из нескольких программных файлов (с исходным текстом программ), которые создаются и обслуживаются отдельными группами программистов. И только после этого все файлы собираются в общий проект. Но как быть с тем фактом, что в таких файлах могут 1 быть одинаково объявлены некоторые разные переменные? В С++ это не-1 удобство разрещается с помощью так называемых пространств имен, которые вводятся в каждый составляющий единый проект текстовый программный файл с помощью директивы:

Namespace <имя пространства имен (идентификатор)> (в эти скобки заключается весь программный текст}

Когда идет сборка общего проекта, то в итоговом тексте пишут директиву: using namespace:: идентификатор пространства имен;

Это обеспечивает в итоговом проекте доступ к переменным файла с данным пространством имен. При использовании поточных классов языка С++в основной программе требуется писать директиву:

using namespace::std;

В противном случае программа не пройдет компиляцию. В листинге 9.9 при-1 водится пример использования директив пространства имен, результат рабо-1 ты программы показан на рис. 9.7.

1йстинг 9.9 -

II 37.срр : Defines the entry point for the console application.

tinclude stdafx.h tinclude <iostream> ttinclude <conio.h>



1 ... 66 67 68 [ 69 ] 70 71 72 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика