比较用户输入和文本文件

时间:2015-08-09 07:54:16

标签: c++

我在做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;
}

1 个答案:

答案 0 :(得分:0)

问题是break只退出最里面的循环。

所以当你打破你退出while循环而不是for循环时,你会再次被要求过生日。

更改此

for (int i=0; i<3; i++)

到这个

for (int i=0; i<3 && !found; i++)