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