|
Программирование >> Дополнительные возможности наследования
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 - переводит точку ввода в конец файла, но у вас есть возможность вводить новые данные в любом месте файла;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |