getline 函数的使用问题

dg1234567 2009-05-17 02:46:36
我写了如下这个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;

}
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lori227 2009-05-17
  • 打赏
  • 举报
回复

std::getline(io_file,w.english);
//默认情况是读一整行, 可以用间隔符号来读
// abced, dfe,afd
//如:std::getline(io_file,w.english, ',');
//就是读取 , 前面所有的内容
//第一次读取abced, 第2次读dfe....

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧