|
Программирование >> Программирование на языке c++
#inclucle <fstream.h> #inclucle <stdlib.h> void error(char* str1,char* str2 = ) { cerr str1 \t str2 endl; cerr - выходной поток exit(1); } для ошибок void main(int argc, char* argv[]) { char c; if (argc != 3) еггог( ошибочное число аргументов ); ifstream rd(argv[1]); исходный файл if (ird) еггог{ нельзя открыть файл - , argv[1]); ofstream wr(argv[2]); файл для копирования if (Iwr) еггог( нельзя открыть файл - , argv[2]); while (rd.get{c)) wr.put(c); if (Ird.eofO II wr.badO) еггог( обшэя ошибка ); Пусть, например, имя этой программы filel .срр. Если вызвать ее следующим образом: filel filel.срр file2.cpp<Enter> то будет создана копия файла filel.срр в файле file2.cpp. В приведенных ниже программах используется несколько новых функций, которые являются компонентами классов istream, ostream, fstream. Каждая из этих функций имеет несколько форм, выбор которых задается числом и типами аргументов. Ниже приводится краткое пояснение только используемых форм. Дополнительную информацию об этих функциях можно получить из соответствующих руководств по применению библиотечных классов и программированию. Вторая программа по аналогии с первой позволяет вывести свой собственный исходный текст, если она записана в файле е88 1 .срр. #include <iostream.h> #include <fstream.h> #include <stdlib.h> void main(void) { fstream in; описывается объект in класса fstream char line[79]; массив для хранения промежуточных данных in.open( e88 1.cpp ,ios::in); открытие файла е88 1.срр для чтения if(!in) проверка состояния потока { cerr Error\n ; вывод данных в поток для ошибок abort{); } завершение программы при ошибке while{ in.getline(line,80) ) cout line endl; Здесь использованы две новые функции: open и getline. Функция open открывает файл и описывается в следующем виде: void open(const char name*,int mode, int prot=fileout::openprot); Она имеет те же аргументы, что и рассмотренные выше конструкторы (отличием является лишь то, что второй аргумент не задается по умолчанию). Функция getline описывается в виде: istream& getline(char *buf,int len,char delim = Она извлекает до len символов из файла в буфер buf до тех пор, пока не встретится символ delim. Третья программа позволяет вывести в файл некоторые значения. #include <iostream.h> #include <fstream.h> #include <stdlib.h> #define size sizeof(towns)/15 задание размера size строки массива towns будут записываться в файл my.txt char towns [][15] = { Lisbon , Porto , Coimbra , Aveiro }; void main(void) { fstream out; описывается объект out класса fstream char line[79]; массив для хранения промежуточных данных out.open( my.txt ,ios::out); открытие файла my.txt для записи if(!out) проверка на наличие ошибок { cerr Error\n ; abortO; } for (int i=0;i<size;i-t-t-) out.write(towns[i],15); запись строк в файл my.txt out.closeO; закрытие файла my txt out.open( my.txt ,los::in); открытие файла my.txt для чтения if(!out) проверка на наличие oujh6ok { cerr Error\n ; abortO; } завершение программы при ошибке for (i=0;i<size;i++) { out.read(line,15); чтение строки из файла my.txt cout line endl; } вывод на экран } прочитанной строки Здесь использованы две новые функции: write и read. Функция write записывает символы в файл и описывается в следующем виде: ostream& write(const char *buf,int n); Здесь buf - указатель на буфер, из которого берутся символы, п - число символов. Функция read читает символы из файла и описывается в виде: istream& read{char *buf,int n); Здесь buf - указатель на буфер, в который записываются символы, п - число символов. Результаты работы программы представятся в следующем виде: Lisbon Porto Coimbra Aveiro Последняя программа демонстрирует операции позиционирования в файле. #include <iostream.h> #include <fstream.h> #include <stdlib.h> #define size 4 char a[15] = Aveiro ; строка, которая будет записана первой в файле
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |