如何逐行读取文件的内容

How to read contents of a file line by line

本文关键字:文件 读取 何逐行 逐行      更新时间:2023-10-16

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

当您进行匹配时,您需要突破while循环

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

否则,当遇到不匹配时,您将覆盖以前找到的任何匹配项(因为y会递增,并且您特别选中y == 0以打印匹配消息)。因此,如果最后一行不匹配,则不会检测到