【发布时间】:2014-07-18 08:30:13
【问题描述】:
我有一个从文本文件中删除数据的功能。
我在输入有效输入时遇到问题:
- 如果我输入错误的输入,它只会按预期执行
else部分 - 如果我输入有效的输入,它会执行
if和else部分。
这是我的代码:
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!";
}
}
}
在输出中。如果我输入True,它会执行并显示“未找到匹配项”。
如果我输入false,它只会显示“未找到匹配项”并且很好。
【问题讨论】:
-
也许你应该在
f.close();之后添加一个break; -
替换
f.close()为break或return。fstream析构函数关闭文件。 -
如果实际上没有找到匹配项,
no matches found应该退出循环。您这样做的方式不会处理托管多组输入变量的文件。 -
@MikeChristensen 我用过break;但它没有用。
-
while (!f.eof())不不不不
标签: c++