一个匹配搜索的问题,不过是我第一次写从文件中即时读取即时搜索。
开始的思路是通过input把number转为name,再进行搜索,后来发现这样不仅费时而且浪费空间;于是采用了把data.txt中的name转化为number,依次与input匹配的方法。
/*
ID: alexyua2
PROG: namenum
LANG: C++
*/
#include<fstream>
#include<string>
using namespace std;
ifstream fin("namenum.in");
ofstream fout("namenum.out");
//ifstream fin("in.txt");
//ofstream fout("out.txt");
ifstream data("dict.txt");
int main()
{
//get input
string num;
fin>>num;
/*transform every name in dict.txt to number
then compare it with the input*/
string name;
int i;
int state = 0;//no matching
while(data>>name)
{
int len = name.length();
string tempt;
for(i=0;i<len;i++)
{
if(name[i] < 'Q')
tempt.push_back((name[i] - 'A')/3 + '2');
else
tempt.push_back((name[i] - 'Q')/3 + '7');
}
if(tempt == num)
{
state = 1;
fout<<name <<endl;
}
tempt.clear();
}
if(state == 0)
fout<<"NONE" <<endl;
//close files
fin.close();
fout.close();
data.close();
return 0;
}