El método seekp(pos) de ostream en C++ se usa para establecer la posición del puntero en la secuencia de salida con la posición especificada. Este método toma la nueva posición que se establecerá y devuelve esta instancia ostream con la posición establecida en la nueva posición especificada.
Sintaxis:
ostream& seekp(streampos pos);
Parámetro: Este método toma como parámetro la nueva posición a configurar.
Valor de retorno: este método devuelve esta instancia de ostream con la posición establecida en la nueva posición especificada.
Excepciones: si la operación establece un indicador de estado interno (excepto eofbit) que se registró con excepciones de miembros, la función genera una excepción de falla de tipo de miembro .
Los siguientes ejemplos demuestran el uso del método seekp() en C++:
Ejemplo 1: para mostrar el uso de seekp() con un archivo binario
- Tome la entrada del usuario sobre el número de serie del registro que se mostrará
- Pase n a la función y luego abra el archivo en modo lectura
- Coloque el puntero de escritura al comienzo del registro por seekp((n-1)*Sizeof (objeto))
- Escriba el registro en el archivo y luego ciérrelo.
- Abra el archivo, lea los datos y luego cierre el archivo.
CPP
// 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 << ")\n"; s.DisplayRecordAtPosition(pos); return 0; }
Producción:
size of record: 24 record no 1 (position int file 0) rno: 1 name: geek
Publicación traducida automáticamente
Artículo escrito por vinaychopra92vc y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA