If和Else条件都执行C++

Iam*_*man 0 c++

我有一个从文本文件中删除数据的功能.

输入有效输入时遇到问题:

  • 如果输入错误的输入,它只会else按预期执行该部分
  • 如果我输入有效输入,它将执行ifelse部分.

这是我的代码:

void Member::processTransaction()
{
    fstream f;

    f.open("Member.txt",ios::in|ios::out);

    int x = 0, y = 0, z = 0;

    while (!f.eof())
    {
        f >> idList[x] >> nameList[y];

        if (id == idList[x])
        {
            cout << idList[x] << "\t" << nameList[x] << endl;

            cout << "Do you want to delete the entry (Y/N) : " << endl;

            char deleteEntry = getche();

            if(deleteEntry=='Y'||deleteEntry=='y')
                deleteInformation();  

            f.close();
        }
        else
        {
            cout << "No Matches Found!";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在输出中.如果我输入True,它会执行并显示"找不到匹配项".如果我进入false,它只显示"找不到匹配"及其罚款.

M.M*_*M.M 10

while(!f.eof()){几乎总是一个错误.这种情况也不例外.

eof意味着您之前尝试过读取内容,但由于文件结束而失败.如果您已经准确地读取了整个文件,那就错了,如果您在尝试读取结束之前关闭文件,就像在此示例中那样.如果流由于其他原因处于错误状态,则为false.

相反,更改为while (f >> idList[x] >> nameList[y]),并使用,break;如果您想要退出循环,除了此读取失败之外的其他原因.