在c ++中搜索.txt文件只能获得第一行

时间:2013-11-23 12:29:23

标签: c++ file search

我有一些房间预订程序,所以我想搜索.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;

}

1 个答案:

答案 0 :(得分:2)

您将通过在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;
}