getline 函数的使用问题
我写了如下这个find函数,发现在从文件输入的时候,如果用>>那么可以读取,但是如果用getline 的话,却查找不到对应的单词,是不是getline 得到的词条和我输入的无法匹配?
空运 ||| AB
空运 ||| Airborne
上面是词条的类型,
另外如果词条中英文有间隔,那么用getline 读取的时候会有问题吗?
请朋友们帮忙看下~~
int find(string aim, word &w)
{
string tmp;
int index=0;
io_file.seekg(0);
io_file>>w.chinese;
io_file>>tmp;
std::getline(io_file,w.english);
while (!io_file.eof() )
{
if (w.english == aim)
{
cout<<w.english<<" "<<w.chinese<<endl;
return index;
}
index++;
io_file>>w.chinese;
io_file>>tmp;
std::getline(io_file,w.english);
}
return -2;
}
int main()
{
Wordfile wordfile("wordlist.txt");
if( !wordfile.is_open() )
{
cerr<<"Îļþ´ò¿ªÊ§°Ü\n";
return -1;
}
int flag=0;
cout<<"Ó¢ÎIJéÖÐÎÄ£º1£¬ÖÐÎIJéÓ¢ÎÄ£º2£¬Í˳ö£º3\n";
cin>>flag;
while( flag != 3 )
{
int i=0;
string aim;
//Íê³ÉÔö¼ÓºÍÐ޸ĵ¥´ÊµÄ¹¦ÄÜ
if (flag == 1)
{
word w; //½¨Á¢Ò»¸öword½á¹¹ÌåÓÃÓÚ´æ´¢µ¥´Ê
cout<< "ÇëÊäÈëÄúÏëÒª²éѯµÄÓ¢Îĵ¥´Ê\n";
cin>>aim; //´´½¨Ò»¸öµ¥´ÊÀàµÄ¶ÔÏó
i = wordfile.find(aim,w); //findº¯ÊýÓÖÌØ¶¨µÄÌØÕ÷
wordfile.refresh();
if( i == -2 )
{
cout<<"ûÓвéѯµ½Õâ¸öµ¥´Ê£¬±§Ç¸£¡\n";
}
}
cout<<"Ó¢ÎIJéÖÐÎÄ£º1£¬ÖÐÎIJéÓ¢ÎÄ£º2£¬Í˳ö£º3\n";
cin>>flag;
}
return 0;
}