Использование файлов для ввода- вывода информации.
Объекты, создаваемые для считывания или записи данных в файлы, называются ofstream. Они являются производными от уже рассмотренного класса iostream. Чтобы приступить к записи в файл необходимо создать объект ofstream, а потом связать его с определённым файлом на диске. Для этого требуется включение в программу файла fstream.h (в этом случае подключение файла iostream.h не нужно).
Объектами iostream поддерживаются флаги, отражающие состояние ввода-вывода. Значение их можно получить при помощи функций.
§ Eof() — возвращает TRUE, если в потоке встречается символ EOF (конец файла).
§ Bad() — возвращает TRUE при попытке ошибочной операции.
§ Fail() —возвращает TRUE как и bad(), а также если операция невыполнима сейчас.
§ Good() —возвращает TRUE, когда всё идёт хорошо.
Для открытия файла myfail.txt нужно^
· Создать поток:
1. для ввода — ifstream f1;
2. для вывода — ofstream f2;
3. для ввода и вывода — fstream f3;
· Привязать поток к файлу:
1. open(имя_файла, режим, доступ);
2. имя файла — параметр типа *char, может содержать полный путь к файлу .
3. режим — тип int, значения см. таблице.
4. доступ —тип int, задаёт права доступа к файлу (см. таб.)
Режим: | |
Ios::app | Добавление в конец файла, только для вывода |
Ios::ate | Позиционирование в конец файла |
Ios::binary | Открытие в двоичном режиме (ввод не текста) |
Ios::in | Открытие файла для ввода |
Ios::nocreate | Открыть уже существующий файл |
Ios::noreplase | Создать новый, если уже есть — ошибка |
Ios::out | Открытие файла для вывода |
Ios::trunc | Открытие существующего файла с уничтожением информации в нём, длина файла ==0. |
Атрибуты: | |
Обычный файл, со свободным доступом, по умолчанию | |
Только для чтения | |
Скрытый файл | |
Системный файл | |
Архивный файл |
При использовании параметров по умолчанию можно сделать так:
F2(“d:\\user\\bs-11\\f2.dat”); или
Ifstream f1(“test.txt”);
Ofstream f2(“rez.txt’);
При окончании работы с программой необходимо использовать метод close(), закрытие файла.
F1.close();
F2.close();
#include<fstream.h>
#include<iostream.h>
Void main(void)
{ char ch;
int num=0;
char buffer[255];
ofstream fout("rez.txt");
cout<<"результат работы программы: \n";
cin.ignore(1,'\n');
Cin.getline(buffer,255);
fout<<buffer<<"\n";
Fout.close();
ifstream fin("rez.txt");
fin.unsetf(ios::skipws);
while(!fin.eof())
{fin>>ch;
cout<<ch;
num++;
}
cout <<"\n файл закончился\n число символов :"<<num<<"\n";
Fin.close();
}
результат работы программы:
укнеку нгшгнш №;%435435прорлорл рорлордло олодлод
кнеку нгшгнш №;%435435прорлорл рорлордло олодлод
Файл закончилс
число символов :50
Строки.
В языке С++ не существует тип данных — строковые, этот тип инициализируется одномерным массивом элементов типа char.
Пример: char *Family=”Орешкина\0”; char Kreek[]=” Helloy, Word!”;
#include<iostream.h>
#include <alloc.h>
#include <string.h>
#include <math.h>
void srav(char* stroka,char* string);
void srav(char* stroka,char* string)
{int i;
i=strcmp(stroka,string); // сравнение двух строк
if(i==0)i=0;
else i=(i<0)?i=-1:i=1;
cout<<"1-ое: "<<stroka<<",2-ое:"<<string<<"\n";
Switch(i)
{
case 0: cout <<"они равны\n";break;
case-1: cout <<"1-ое меньше\n";break;
case 1: cout <<"1-ое больше\n";break;
}
}
Int main(void)
{
char stroka[80],*ptr,string[80],c='*';
Int i;
cout<<"/*результат работы программы\n";
cout <<"Введите строку:";
cin >>stroka;
i=strlen(stroka);
cout<<"длина строки "<< stroka<< "="<<I << endl;
cout <<"_______"<< stroka<<"\n";
strcpy(string,stroka); //копирование второй строки в первую
cout <<"*******"<< string<<"\n";
strcat(stroka,"* Это Я") ; //добавление в первую строку второй
cout << "^^^^^^^"<<stroka<<"\n";
Дата добавления: 2015-12-26; просмотров: 769;