Программирование >>  Дополнительные возможности наследования 

1 ... 168 169 170 [ 171 ] 172 173 174 ... 265


resetiosflags (флаг)-сбрасывает один или несколько флагов. Например, в строке .

cout setw(12) setfill (#) hex x endl; устанавливается ширина поля в 12 знаков, символ заполнения #, восьмеричное рсно-вание выводимых чисел, после чего выводится значение переменной х, добавляется символ разрыва строки и очищается буфер. Все манипуляторы, за исключением flush, endl и setw, остаются включенными на протяжении всей работы программы, если, конечно, не будут сделаны другие установки. Установка манипулятора setw отменяется сразу же после текущего вывода с объектом cout. , ,

С манипуляторами setiosflags и resetiosflags могут использоваться следующие ios-флага: ios:: left -выравнивает данные по левому краю поля вывода; ; - .

ios:: right - выравнивает данные по правому краю поля вывода; iosi.iinterval - выравнивает данные по ширине поля вывода; ios::iclec-выводит данные в десятичном формате; ios::oct - выводит данные В восьмеричном формате; ios: :hex - выводит данные в шестнадцатеричном формате;

ios: :showt)ase - добавляет префикс Ох к шестнадцатеричным значениям и О к восьмеричным значениям;

10s:: showpoint - заполняет нулями недостающие знаки в значениях заданной длины,

ios: :uppercase - отображает в верхнем регистре шестнадцатеричиые и экспоненциальные значения;

ios:: showpos - добавляет знак+ перед положительными числами;

ios:;isclentific -отображаетчисла с плавающей запятой в экспоненциальном представлении;

ios: :fixed - отображает числа с плавающей запятой в шестнадцатеричном представлении.

Дополнительную информацию можно получить из файла ios. h или из справочной системы компилятора.

Использование файлов для ввода о вывода данных

Потоки С++ обеспечивают универсальные методы обработки данных, поступающих с клавиатуры или диска, а также выводимых на экран и диск. В любом случае можно использовать либо операторы ввода и вывода, либо другие стандартные функции и манипуляторы. Дальнейшие разделы главы посвящены операциям открытия и закрытия файлов, которые сопровождаются созданием объектов if stream и ofstream.

Объекты ofstream

Объекты, создаваемые для считывания или записи данных в файл, называются ofstream. Они являются производными от уже знакомого вам класса iostream.

Чтобы приступить к записи в файл, нужно сначала создать объект ofstream, а затем связать его с определенным файлом на диске. Использование объектов ofstream требует включения в программу файла заголовка fstream.h.



Поскольку fstream содержит в себе iostream. h, нет необходимости в отдельном включении файла iostream. h.

Состояния условий

Объектами iostream поддерживаются флаги, отражающие состояние ввода и вывода. Значение каждого из этих флагов можно проверить с помощью фушщий, возвращающих TRUE или FALSE: eof(), bad(), fail() и good(). Функция eof() возвращает значение TRUE, если в объекте iostream встретился символ EOF (end of file - конец файла). Функция Dad() возвращает значение TRUE при попьггке выполнить оишбочную операцию. Функция fail() возвращает значение TRUE каждый раз, когда это же значение возвращает функция bad(), а также в тех случаях, когда операция невьтолнима в данных условиях. Наконец, функция good О возвращает значение TRUE, когда все идет хорощо, т.е. все остальные функции возвращают значение FALSE.

Открытие файлов уля ввоуа-вывоуа

Для открытия файла myfile.cpp с помощью объекта ofstream нужно объявить экземпляр этого объекта, передав ему в качестве параметра имя файла:

ofstream foutCmyfile.cpp );

Открытие файла для ввода выполняется аналогичным образом, за тем исключением, что для этого используется объект if stream:

ifstream fin( myfile.cpp );

Обратите внимание, что в выражениях задаются имена объектов tout и fin, которые можно использовать так же, как объекты cout и cin соответственно.

Очень важным методом, используемым в файловых потоках, является функция-член close(). Кахсдый создаваемый вами объект файлового потока открывает файл для чтения или записи (или и для того и другого сразу). По заверщении работы файл необходимо закрыть с помощью функции close(), чтобы впоследствии не повредить его и записанные в нем данные.

После связывания объектов потока с соответствующими файлами их можно использовать так же, как остальные объекты ввода-вывода. Пример использования объектов для обмена данными с файлами показан в листинге 16.16.

Аистииг 16.16. Открытие фаАда ддя чтения н записи

ftinclude <fstream.h>

int mainO

char fileName[80];

char buffer[255]; для ввода данных пользователем cout << File name: ; cin fileName;

ofstream fout(fileName); открытие файла для записи

10: tout This line written directly to the file...\ n ;



12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

cout Enter text for the file; ;

cin,ignore(1,\ n); пропускает символ разрыва строки после имени файла

cin.getline(buffer,255); принимает данные, введенные пользователем, foot << buffer << \ п ; и записывает их в файл

fout.closeO; закрывает файл, после чего его вновь можно открыть

ifstream fin(fileName); открывается тот же файл для чтения cout Heres the contents of the file;\ n ; char ch;

while (fin.get(ch)) cout ch;

cout << \ п**.Епс1 of file contents. ***\ n ;

fin.closeO; не забудь закрыть файл в конце программы

return 0;

\ , sj File name; testi

- i Enter text for the file: This text is written to the file! Heres the contents of the file; This line written directly to the file... This text is written to the file!

**End of file contents,***

В строке 4 создается массив для записи имени файла, а в строке 5 - еше * - один массив для временного хранения информации, вводимой пользовате-

лем. В строке 6 пользователю предлагается ввести имя файла, которое записывается в массив filefJame. В строке 9 создается объект ofstream с именем foot, который связывается с введенным ранее именем файла. В результате происходит открытие файла. Если файл с таким именем уже сушествует, содержащаяся в нем информация будет замешена.

Строкой 10 введенный текст записывается прямо в файл, а в строке 11 пользователю вновь предлагается ввести новый текст. Символ разрыва строки, оставшийся в буфере после ввода имени файла, удаляется строкой 12, после чего все введенные пользователем данные записываются в массив в строке 13. Введенный текст записывается в файл вместе с символом разрыва строки, а затем в строке 15 этот файл закрывается.

В строке 17 файл открывается заново, но в этот раз для чтения, и его содержимое посимвольно вводится в программу в строках 20-21.

Настройка открытия файла объектом ofstream

По умолчанию при связывании объекта ofstream с именем файла создается новый файл с указанным именем, если таковой не сушествует, или удаляется содержимое уже существующего файла с таким же именем. Чтобы изменить установки по умолчанию, используется второй аргумент конструктора объекта ofstream.

Для второго аргумента можно устанавливать следующие константные значения:

ios;; арр - добавляет данные в конец файла вместо удаления всего содержимого файла;

ios:; ate - переводит точку ввода в конец файла, но у вас есть возможность вводить новые данные в любом месте файла;



1 ... 168 169 170 [ 171 ] 172 173 174 ... 265

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