如何逐行读取文件的内容

时间:2013-12-15 10:27:00

标签: c++ file-handling

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

}

1 个答案:

答案 0 :(得分:1)

当你进行比赛时,你需要打破你的while循环

while(getline (yfile,line))
{
  if(line==a)
  {
    y=0;
    break;  //<--- match found so exit loop
  }
  else
  {
    y++;
  }
}

否则当您遇到不匹配时,您会覆盖之前找到的所有匹配项(因为y会增加,并且您专门检查y == 0以打印匹配消息)。因此,如果最后一行不匹配,则不会检测到它