Рубрики

ostream :: seekp (pos) метод в C ++ с Exmaples

Метод seekp (pos) ostream в C ++ используется для установки позиции указателя в выходной последовательности с указанной позицией. Этот метод берет новую позицию для установки и возвращает этот экземпляр ostream с позицией, установленной в указанную новую позицию.

Синтаксис:

ostream& seekp(streampos pos);

Параметр: этот метод принимает новую позицию для установки в качестве параметра.

Возвращаемое значение: Этот метод возвращает этот экземпляр ostream с позицией, установленной на указанную новую позицию.

Исключения: Если операция устанавливает внутренний флаг состояния (кроме eofbit), который был зарегистрирован с исключениями членов, функция выдает исключение сбоя типа члена.

Ниже приведены примеры использования метода seekp () в C ++:

Пример 1: показать использование seekp () с двоичным файлом

  • Возьмите от пользователя информацию о серийном номере отображаемой записи.
  • Передайте n функции, затем откройте файл в режиме чтения.
  • Поместите указатель записи в начало записи с помощью seekp ((n-1) * Sizeof (object))
  • Запишите запись в файл, а затем закройте ее.
  • Откройте файл, прочитайте данные и затем закройте файл

// C ++ программа для демонстрации использования
// метод ostream :: seekp () с использованием двоичного файла

  
#include <bits/stdc++.h>

using namespace std;

  

class student {

    int rno;

    char name[20];

  

public:

    void getdata()

    {

        name = "geek" rno = 11;

    }

  

    void putdata()

    {

        cout << rno << endl

             << name << endl;

    }

  

    // принимает серийный номер

    // записи для отображения

    void DisplayRecordAtPosition(int);

};

  

void student::DisplayRecordAtPosition(int n)

{

  

    ofstream ofs;

  

    // открытие файла в режиме записи

    ofs.open("he.dat", ios::out | ios::binary);

  

    // отображает размер объекта

    // размер объекта равен 22

    // char [20] + int = 1 * 20 + 2 = 22

    cout << "size of record: "

         << sizeof(s) << endl;

  

    // Использование метода seekp () для изменения позиции

    ofs.seekp((n - 1) * sizeof(student));

  

    // Пишем в новой позиции

  ofs.write(char*)this, sizeof(student));

  

  // Закрытие выходного потока

  ofs.close();

  

  ifstream ifs;

  ifs.open("he.dat", ios::in | ios::binary);

  ifs.seekg((n - 1) * sizeof(student);

            ifs.read((char)*) this,

            sizeof(student)) ";

      putdata();

  ifs.close();

}

  
// Код драйвера

int main()

{

    student s;

    int pos = 1;

  

    cout << "record no " << pos

         << " (position int file "

         << pos - 1 << ")\n";

    s.DisplayRecordAtPosition(pos);

  

    return 0;

}

Выход:

size of record: 22 
record no 1 (position int file 0)
rno: 1
name: vinay

Рекомендуемые посты:

ostream :: seekp (pos) метод в C ++ с Exmaples

0.00 (0%) 0 votes