![]() |
|
Программирование >> Расширенная версия языка c++
ios::iu loiit. Значения режима открытия файла по умолчанию не поддерживаются. Это относится как к конструктору класса fstream, так и к функции ореп(). Например, при работе со старой библиотекой ввода/вывода С++, чтобы открыть файл для ввода и вывода с помощью функции ореп(), необходимо использовать следующую конструкцию: fstream mystream; mystream.open( test , ios::in j ios::out); В современной библиотеке ввода/вывода C++, если режим открытия файла не указан, любой объект типа fstream автоматически открывает файл для ввода и вывода. И последнее. При работе со старой библиотекой ввода/вывода к ошибке выполнения функции ореп() ведет значение режима открытия файла, равное ios::noncreate, если указанный файл не существует, или равное ios::noreplace, если, наоборот, указанный файл уже существует. В стандарте Standard C++ данные значения режима открытия файла не поддерживаются. ![]() 1. Напишите программу для копирования текстового файла. Эта программа должна подсчитывать число копируемых символов и выводить на экран полученный результат. Почему это число отличается от того, которое выводится при просмотре списка файлов каталога? 2. Напишите программу для заполнения информацией следующей таблицы в файле phone. Исаа тон, 415 555-3423 Роберт Годдард, 213 555-2312 Энрико Ферми, 202 555-1111 3. Напишите программу для подсчета числа слов в файле. Для простоты считайте, что словом является все, имеющее с двух сторон пробелы. 4. Какие действия выполняет функция is open? 9.3. Неформатируемый двоичный ввод/вывод Хотя текстовые файлы (т. е. файлы, информация в которых представлена в кодах ASCn, - примеч. пер.) полезны во многих ситуациях, у них нет гибкости неформатированных двоичных файлов. Неформатированные файлы содержат те самые исходные или сырые двоичные данные, которые непосредственно используются вашей программой, а не удобный для восприятия человека текст, данные для которого транслируются операторами и Поэтому о неформатируемом вводе/выводе иногда говорят как о сыром (raw) вводе/выводе. В С++ дж двоичных файлов поддерживается широкий диапазон функций ввода/вывода. Эти функции дают возможность точно контролировать процессы считывания из файлов и записи в файлы. На нижнем уровне двоичного ввода/вывода находятся функции get() и put(). С помощью функции-члена put() можно записать байт; а с помощью функции-члена get() - считать. Эти функции являются членами всех потоковых классов соответственно дж ввода и дж вывода. Функции get() и puf() имеют множество форм. Ниже приведен! их наиболее часто встречающиеся версии: istream figet(cha сол); ostream &put(char символ); Функция get() считывает один символ из связанного с ней потока и передает его значение аргументу символ. Ее возвращаемым значением является ссылка на поток. При считывании символа конца файла функция возвратит вызывающему потоку значение false. Функция put() записывает символ в поток и возвращает ссылку на поток. Дж считывания и записи блоков двоичных данных используются функции read() и write{), которые также явжются членами потоковых классов соответственно для ввода и для вывода. Здесь показаны их прототипы: istream firead(char * буфер, streamsize члсло байт) ; ostream fiwrite(const char * буфер, streamsize чксло баят) ; Функция считывает из вызывающего потока столько байтов, сколько задано в аргументе число 6айт и передает их в буфер, определенный указателем буфер. Функция writeO записывает в соответствующий поток из буфера, который определен указателем буфер, заданное в аргументе числобайт число байтов. Значения типа streamsize представжют собой некоторую форму целого. Если конец файла достигнут до того, как было считано симво- лов, выполнение функции read() просто прекращается, а в буфере оказывается столько символов, сколько их было в файле. Узнать, сколько символов было считано, можно с помощью другой функции-члена gcoant(), прототип которой приведен ниже: streamsize gcountO ; - Функция возвращает количество символов, считанных во время последней операции двоичного ввода. Естественно, что при использовании функций, предназначенных для работы с двоичными файлами, файлы обычно открывают в двоичном, а не в тек- Пр11ме1Ы 1. В следующей программе на экран выводится содержимое файла. Используется функция get(). ttinclude -.-ObLieanO- ttinclude <fstream> - . using namespace std; in (int argc, char *argv[]: char ch; if(argc!=2) cout Содержое: <имя файла>\п , return 1; } - > ifstream in(argv[lj, ios::in ios: :binary) ; if(!in) { cou Файл открыть невозможно\п ; return } . : . . : -.. while{! in.eof О) ( /* in.get(ch); cou ch; } ii::-. . in. close (); . return 0; 2. В данной программе для записи в файл вводимых пользователем символов используется функция put(). Программа завершается при вводе знака доллара $. #include <iostream> ttinclude <fstream> --i t, using namespace std; режиме. Смысл этого понять легко, значение режима открытия файла ios::binary предотвращает какое бы то ни было преобразование символов. Это важно, когда в файле хранятся двоичные данные, например, целые, вещественные или указатели. Тем не менее, для файла, открытого в текстовом режиме, хотя в нем содержится только текст, двоичные функции также вполне доступны, но при этом помните о возможности нежелательного преобразования символов.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |