|
Программирование >> Элементы языков с и с++
а из строки 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>
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |