Пятница, 2025-06-20, 4:37 PM
Приветствую Вас Гость | RSS
Главная | Использование файлов для ввода-вывода в С++ | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

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

     

     

    Использование файлов для ввода-вывода информации

    Объекты, создаваемые для считывания или записи данных в файлы, называются ofstream.  Они являются производными от уже рассмотренного класса iostream. Чтобы приступить к записи в файл необходимо создать объект ofstream, а потом связать его с определённым файлом на диске.  Для этого требуется включение в программу файла fstream.h (в этом случае подключение файлаiostream.h не нужно).

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

    • Eof() — возвращает TRUE, если в потоке встречается символ EOF (конец файла).
    • Bad() — возвращает TRUE при попытке ошибочной операции.
    • Fail() —возвращает TRUE как и bad(), а также если операция невыполнима сейчас.
    • Good() —возвращает TRUE, когда всё идёт хорошо.

    Для открытия файла myfail.txt  нужно^

    •  Создать поток:
      • для ввода — ifstream f1;
      • для вывода — ofstream f2;
      • для ввода и вывода — fstream f3;
    •  Привязать поток к файлу:
      • open(имя_файла, режим, доступ);
      • имя файла — параметр типа *char, может содержать полный путь к файлу .
      • режим — тип int, значения см. таблице.
      • доступ —тип int, задаёт права доступа к файлу (см. таб.)

    Режим:

    Ios::app

    Добавление в конец файла, только для вывода

    Ios::ate

    Позиционирование в конец файла

    Ios::binary

     Открытие в двоичном режиме (ввод не текста)

    Ios::in

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

    Ios::nocreate

    Открыть уже существующий файл

    Ios::noreplase

    Создать новый, если уже есть — ошибка

    Ios::out

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

    Ios::trunc

    Открытие существующего файла с уничтожением информации в нём, длина файла ==0.

    Атрибуты:

    0

    Обычный файл, со свободным доступом, по умолчанию

    1

    Только для чтения

    2

    Скрытый файл

    4

    Системный файл

    8

    Архивный файл

    При использовании параметров по умолчанию можно сделать так:

    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";
               srav(string,stroka);
                srav(stroka,stroka);
                srav(stroka,string);
               ptr = strchr(stroka, c);                  // проверка на вхождение символа.
               if (ptr)
    cout << "Символ "<< c <<" находится на " << ptr-stroka+1 << "позиции\n" ;
    else
    cout<<"Этого символа нет в строке";
               cout<<"*//";
    return 0;
    }

     

    Результат работы программы

    Введите строку: Привет
    длина строки Привет=6
    _______Привет
    *******Привет
    ^^^^^^^Привет* Это Я
    1-ое: Привет,2-ое:Привет* Это Я
    1-ое меньше
    1-ое: Привет* Это Я,2-ое:Привет* Это Я
    они равны
    1-ое: Привет* Это Я,2-ое:Привет
    1-ое больше

    Символ * находится  на 7позиции

    uCozCopyright MyCorp © 2025