有人能告诉我这是否是一种通过 ID 搜索帐户并输出有关他的所有数据的好方法?如果不是,哪种方法最好?
我有这个:
void account::showacc() {
ifstream inFile;
inFile.open("account.dat",ios::binary|ios::in|ios::app);
int accnum1,n;
cout<<"Enter account num: ";
cin>>accnum1;
n=test();
for(int i=0;i<n;i++)
{
inFile.read((char*)&acc,sizeof(acc));
if(accnum==accnum1)
{
cout<<"account number is: "<<accnum<<endl;
cout<<"The possesor's name is :"<<name;
}
}
inFile.close();
}
test()
是:
int account::test()
{
ifstream inFile;
inFile.open("account.dat",ios::binary|ios::in|ios::app);
inFile.seekg(0,ios::end);
int n;
n=inFile.tellg()/sizeof(acc);
inFile.close();
return n;
}
最佳答案
好吧,这可行,但它会很慢......取决于你的文件有多大,以及你的程序运行多长时间(即,如果它是在后台运行的持久程序或某种类型的服务),内存映射文件和/或将整个文件读入 std::stringstream
,然后扫描内存中存储的文件会是一个更好的主意。同样,这完全取决于您的文件有多大,以及阅读程序的持久性。如果它是一个巨大的文件,而你的程序只运行一次然后就退出了,那么是的,你现在的方法是可以的。
关于c++ - 如何以最好、最简单的方式在文件中搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962399/