gpt4 book ai didi

c++ - 这个 while 循环执行其正确的功能,但需要其他东西吗?

转载 作者:行者123 更新时间:2023-11-28 02:25:28 25 4
gpt4 key购买 nike

我正在用 C++ 编写酒店预订程序。当用户想要打开客人的信息文件时,他们必须输入客人的名字和姓氏。如果其中不存在具有该名称的数据文件,它会告诉用户该文件不存在。然后再次询问文件名,用户输入真实的文件名。

问题是,如果有人输入一个他们知道是真实的文件名,它会说该文件不存在。但是,如果他们在出现提示时重新输入文件名,则会加载文件。

顺便说一句,打开文件需要这个循环。这是我难过的主要事情。我试着摆弄它,看看我是否真的需要它,显然我确实需要。我还需要第一个 file_ptr.open(filename,ios::in); ,以及第二个。我也不明白为什么我需要两者。

这是 while 循环的具体代码:

cout << "Open Member File";
system ("cls");
char filename [100];
ifstream file_ptr;
cout << "\n\t\t\t\tSaved Members:\n\n";
system ("dir/b *.");
cout << "\n\nPlease type the name of the member you\n";
cout << " wish to open as it appears above OR\n";
cout << " type z (Lower case) to return to main menu: ";
cin.ignore();
gets (filename);

if (filename[0] != 'z')
{

//cout<< "\nPlease enter 6 digit Registration Access Code: ";
//cin>>RAC;

//if (RAC == (file_ptr, membershipNumber))
//{
file_ptr.open(filename,ios::in);

// char in_char;
while(!file_ptr)
{
cout << "Member does not exist\n";
gets (filename);
file_ptr.open(filename,ios::in);

}

我不明白为什么在用户提供合法文件名的情况下需要 while 循环来打开文件。但它总是说该文件不存在,然后在第二次尝试时打开文件。

这是输出:

保存的成员:

猎人毕业

请输入您希望打开的成员(member)名称,如上方所示,或者输入 z(小写)返回主菜单:Hunter Grad

成员不存在

我第二次输入相同的文件名时,它会将我带到该文件

我不明白为什么?我希望有人知道。谢谢

最佳答案

http://www.cplusplus.com/reference/istream/istream/ignore/

你告诉输入流忽略一个字符,所以文件名不是你输入的。如果他们键入“John”,那么您尝试打开文件“ohn”。

如果您在调试器中查看过该变量或只是检查了您的输出,那么它会很明显。调试器在解决大多数问题时比 stackoverflow 更有效。当你真的遇到困难时,你想来这里。

他们第二次输入“John”时,您会查找名为“John”的文件,因为循环中没有忽略。

关于c++ - 这个 while 循环执行其正确的功能,但需要其他东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com