C++ 如何以最佳、最简单的方式搜索文件?
有人能告诉我这是否是一种通过id搜索帐户并输出关于他的所有数据的好方法吗?如果不是,那最好的方法是什么 我有这个:C++ 如何以最佳、最简单的方式搜索文件?,c++,search,file-io,C++,Search,File Io,有人能告诉我这是否是一种通过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();
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();
}
好吧,这会起作用,但会很慢。。。根据文件的大小和程序运行的时间(即,如果是在后台运行的持久程序或某种类型的服务),最好将文件映射到内存中,和/或将整个文件读入
std::stringstream
,然后在内存中扫描存储的文件。同样,这将取决于文件的大小以及读取程序的持久性。如果它是一个大文件,并且您的程序只运行一次,然后退出,那么是的,您当前的方法是可以的。您可以通过更改for循环来提高效率。事实上,即使找到了帐号,看起来您也要浏览整个文件。假设没有重复的号码,您应该将其设置为在找到号码时终止。根据您的使用情况,您最好使用数据库引擎,例如,并让它负责搜索您。SQLite作为一个C++库存在,你可以在程序中使用。这可能是更好的,一个专门针对这类问题设计的网站。除此之外,这种方法应该适合您。但是你的文件是如何组织的?如果不是随机的,其他搜索方法会更好。我有一个二进制文件(account.dat),其中存储了所有关于帐户(银行帐户)的信息。我不知道它是如何组织的)。那些搜索方法是什么?没关系,对不起。我不知道我在说什么,我感到困惑。可能有,我会看看下面杰森的帖子。
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;
}