gpt4 book ai didi

c++ - 在二进制文件中搜索 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:24 26 4
gpt4 key购买 nike

#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

class Student{
private:
char name[40];
char grade;
float marks;
public:
void getdata();
void display();
char* getname(){return name;}
void search(fstream,char*);
};

void Student::getdata(){
char ch;
cin.get(ch);
cout<<"Enter name : ";
cin.getline(name,40);
cout<<"Enter grade : ";
cin>>grade;
cout<<"Enter marks : ";
cin>>marks;
cout<<"\n";
}

void Student::display(){
cout<<"Name : "<<name<<"\t";
cout<<"Grade : "<<grade<<"\t";
cout<<"Marks : "<<marks<<"\t"<<"\n";
}

void search(fstream fin,char* nm)/*initializing argument 1 of 'void search(std::fstream, char*)'*/{
Student s;
fin.open("stu.txt",ios::in|ios::binary);
while(!fin){
fin.read((char*)&s,sizeof(s));
if(s.getname()==nm){
cout<<"Record found !";
s.display();
break;
}
}
fin.close();
}

int main(){
system("cls");
char nam[40];
Student arts[3];
fstream f;
f.open("stu.txt",ios::in|ios::out|ios::binary);
if(!f){
cerr<<"Cannot open file !";
return 1;
}
for(int i=0;i<3;i++){
arts[i].getdata();
f.write((char*)&arts[i],sizeof(arts[i]));
}
f.close();
cout<<"Enter name to be searched for : ";
cin.getline(nam,40);
char* p = new char[40];
p=nam;
search(f,p);/*synthesized method 'std::basic_ios<char>::basic_ios(const std::basic_ios<char>&)' first required here*/
getch();
f.close();
return 0;
}

上述程序首先创建一个文件“stu.txt”并将用户给定的输入写入该文件。然后应该根据用户输入的名称搜索记录(使用 search() 函数)。我在调用 search() 和定义 search() 时遇到错误。我把编译器抛出的错误作为注释行。谁能解释那里出了什么问题?

最佳答案

fstream 不可复制,因此您必须将 fstream 作为引用传递,或者在 c++11 中移动它。

假设您在调用 search 后访问 f,最好通过引用传递它。

更改您的函数以接受 fstream 作为引用:

void search(fstream& fin,char* nm)

关于c++ - 在二进制文件中搜索 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737457/

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