gpt4 book ai didi

c++ - 从 C++ 中的二进制文件顺序读取结构

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:44 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,当程序正在执行一个操作时(例如:搜索、更新或添加),应该是直接访问。该程序不应顺序读取所有记录以达到记录。

 #include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct Student{
int Id;
int Money;
int Age;
char name[15];
};

void main(){
Student buffer;
ofstream BinaryFile("student", ios::binary);
ifstream WorkerText("worker.txt");

//-------------------------------------------------------------------------------------------------------------
while( WorkerText.good() ){
WorkerText>> buffer.Age >> buffer.name >> buffer.name >> buffer.name;
BinaryFile.write( (char *) &buffer, sizeof(Student) );

}
BinaryFile.close();
//-------------------------------------------------------------------------------------------------------------
ifstream ReadBinary( "student", ios::binary | ios::out );
while( BinaryFile.good() ){
ReadBinary.read((char*)&buffer,sizeof(Student));
cout<<buffer.Age;

}


//-------------------------------------------------------------------------------------------------------------


system("pause");
}

我卡在这里我无法按顺序阅读我该如何解决这个问题

最佳答案

如果文件包含相同大小的结构,或者使用一些索引表,则可以跳过顺序读取。

对于相同大小的结构的情况:

void ReadStudent(istream &src, Student &dst)
{
src.read(&dst, sizeof(dst));
}

void GoToStudentIndex(istream &src, size_t idx)
{
src.seekg(idx * sizeof(Student), is.beg);
}

上述函数假定您正在按如下方式写入数据:

void WriteStudent(ostream &dst, const Student &src)
{
dst.write(&src, sizeof(src));
}

关于c++ - 从 C++ 中的二进制文件顺序读取结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com