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++ program to show the use of // ostream::seekp() method using binary file #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; } // accepts the serial number // of record to be displayed void DisplayRecordAtPosition( int ); }; void student::DisplayRecordAtPosition( int n) { ofstream ofs; // opening the file in writing mode ofs.open( "he.dat" , ios::out | ios::binary); // displays the size of the object // sizeof object is 22 // char[20]+int = 1*20 + 2 = 22 cout << "size of record: " << sizeof (* this ) << endl; // Using seekp() method to change position ofs.seekp((n - 1) * sizeof (student)); // Writing in the new position ofs.write( char *) this , sizeof (student)); // Closing the output stream 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(); } // Driver code int main() { student s; int pos = 1; s.getdata(); cout << "record no " << pos << " (position int file " << pos - 1 << ")
" ; s.DisplayRecordAtPosition(pos); return 0; } |
Выход:
размер записи: 24 запись № 1 (позиция в файле 0) rno: 1 имя: компьютерщик