... HY 我的程序只是在文件中输入文本行。 然后它从用户输入一行作为输入并检查它是否存在于文件中。 如果是,则显示“已找到”,否则为“未找到”。 问题是,在读取文件时,它只检查文件中的最后一行,并显示前一行的“未找到”。请指导我如何逐个读取所有行并将它们与输入字符串进行比较。
#include<iostream>
#include<fstream>
#include<string>
#include<conio.h>
using namespace std;
void main()
{
int x=0,y=1;
string f;
while(x!=1){
ofstream myfile("try.txt",ios::app);
if(myfile.is_open())
{
cin>>f;
myfile << f <<endl;
myfile.close();
}
else
{cout<<"file could not be opened";}
cout<<"enter more?"<<endl;
cin>>x;
}
string line;
string a;
cin>>a;
ifstream yfile("try.txt");
if(yfile.is_open())
{
while(getline (yfile,line))
{
if(line==a)
{y=0;}
else
{y++;}
}
if(y==0)
{cout<<"found"<<endl;}
else
{cout<<"match not found"<<endl;}
yfile.close();
}
getch();
}
答案 0 :(得分:1)
当你进行比赛时,你需要打破你的while循环
while(getline (yfile,line))
{
if(line==a)
{
y=0;
break; //<--- match found so exit loop
}
else
{
y++;
}
}
否则当您遇到不匹配时,您会覆盖之前找到的所有匹配项(因为y
会增加,并且您专门检查y == 0
以打印匹配消息)。因此,如果最后一行不匹配,则不会检测到它