C++中ostream的seekp(pos)方法用于将指针在输出序列中的位置设置为指定位置。此方法采用要设置的新位置,并返回该ostream实例,并将其位置设置为指定的新位置。
句法:
ostream& seekp(streampos pos);
参数:此方法将要设置的新位置作为参数。
返回值:该方法返回此ostream实例,并将其位置设置为指定的新位置。
排除:如果该操作设置了一个内部状态标志(eofbit除外),该标志已向成员异常注册,则该函数将引发成员类型failure的异常。
下面的示例演示了C++中seekp()方法的使用:
示例1:显示对binary文件的seekp()的使用
- 从用户那里输入要显示的记录的序列号
- 将n传递给函数,然后以读取模式打开文件
- 通过seekp((n-1)* Sizeof(object))将写指针放在记录的开头
- 将记录写入文件,然后将其关闭
- 打开文件读取数据,然后关闭文件
// C++ program to show the use of
// ostream::seekp() method using binary file
#include
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;
}
输出:
size of record: 24
record no 1 (position int file 0)
rno: 1
name: geek
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。