我在做C ++。我想比较整个texfile中用户输入的内容 我的文本文件是这样的:
Kumar India +9102223403434 01/02/1980 SingaporeAirlines 8118 Elite -
我总共有15个数据项。 最重要的是,如果用户无法输入正确的数据,则只有3次尝试。
这是我的代码。请指教。
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
void Member();
using namespace std;
int main()
{
int option;
string member;
cout<<"\tWelcome!\n";
cout<<"\n1. Member"<<endl;
cout<<"2. Non member"<<endl;
cout<<"Please enter your option."<<endl;
cin>>option;
system("cls");
{
if (option==1)
{
Member();
}
else if (option==2)
{
cout<<"awesome";
}
else
cout<<"Invalid choice!";
}
system("pause");
return 0;
}
void Member()
{
ifstream inFile;
string userName,userNationality,airline,userType,type,userBirthday,birthday,userContact,Tmiles,userBenefit;
bool found=false;
for (int i=0; i<3; i++)
{
cout << "Enter birthday: ";
cin>>birthday;
inFile.open("list.txt");
if (!inFile)
cout << "Unable to open file"<<endl;
else
{
while (!inFile.eof())
{
inFile >> userName >> userNationality >> userContact >> userBirthday >> airline >> Tmiles >> userType >> userBenefit;
if (inFile.fail())
break;
else if (userBirthday == birthday)
{
system("cls");
cout<<"welcome"<< " " << userName <<"!" << endl;
found=true;
break;
}
}
}
}
inFile.close();
if (!found) //found==false
cout<<"You have exceed the limit. PLease try again"<<endl;
}
答案 0 :(得分:0)
问题是break只退出最里面的循环。
所以当你打破你退出while循环而不是for循环时,你会再次被要求过生日。
更改此
for (int i=0; i<3; i++)
到这个
for (int i=0; i<3 && !found; i++)