C++ 如何以最佳、最简单的方式搜索文件?

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();

有人能告诉我这是否是一种通过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();
}

好吧,这会起作用,但会很慢。。。根据文件的大小和程序运行的时间(即,如果是在后台运行的持久程序或某种类型的服务),最好将文件映射到内存中,和/或将整个文件读入
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;
}