在 c++ 中搜索.txt文件只会得到第一行

Search in .txt file in c++ only get's the first line

本文关键字:一行 c++ 搜索 txt 文件      更新时间:2023-10-16

我有一些房间预订程序,所以我想在.txt文件中搜索,这样我就可以找到预先预订的房间。

问题是:

搜索函数只读取.txt文件中的第一行所以当我输入重复的信息时,它只检查第一行
你能帮我吗谢谢

int search(int search_num){    
string search= to_string(search_num);
int offset;
string line ;
ifstream myfile;
myfile.open("booked.txt", ios::app);
ofstream booked ("booked.txt", ios ::app);
     if(myfile.is_open())
{
    while(!myfile.eof())
    {
        getline(myfile,line);
        if((offset=line.find(search,0))!=string :: npos)
        {
            return 1;
        }
        else {
            return 2;
            }
    }
    myfile.close();
}
else
    cout <<"Couldn't open" << endl;

}

在if语句的两种情况下都返回一个值,从而结束函数的执行。返回一个值将结束函数的执行,因此您总是在读取第一行之后结束。我的猜测是,你想把return 2;移到函数的末尾。

请注意,通过这种方式,您也总是return,而从不调用myfile.close(),这可能会在其他地方引起问题。虽然我不理解您的返回值1和2的含义,但我建议这样做:

int search(int search_num){    
 string search= to_string(search_num);
 int offset;
 string line ;
 ifstream myfile;
 myfile.open("booked.txt", ios::app);
 int return_value = 2;
 ofstream booked ("booked.txt", ios ::app);
 if(myfile.is_open()) {
    while(!myfile.eof()) {
        getline(myfile,line);
        if((offset=line.find(search,0))!=string :: npos) {
            return_value = 1;
            break;
        }
    }
    myfile.close();
 } else {
    cout <<"Couldn't open" << endl;
 }
 return return_value;
}