IFstream在选择菜单选项后无法打开文件
ifstream won't open file after selecting menu choice
所以我的主要代码是一个菜单。
BankAccount BA;
ifstream fin;
int UserAction = -1;
while (UserAction != 0) {
cout << "menu here";
cin >> UserAction;
if (UserAction == 1)
BA.getInstance(BA); //Input by keyboard. Works fine.
if (UserAction == 2)
BA.getInstance(BA, fin); //Input by file.
}
如果我选择选项 #2,它将执行以下代码:
void BankAccount::getInstance(BankAccount &BA, ifstream &fin) {
string actN, fname, lname, InputFileName;
double bal;
fin.sync();
cout << "Please enter input file path: ";
getline(cin, InputFileName);
if (fin.fail())
cout << "failed";
else {
fin.open(InputFileName.c_str());
BA.getInstance(BA, fin);
}
fin >> actN;
fin >> lname;
fin >> fname;
fin >> bal;
BA = BankAccount(actN, lname, fname, bal);
}
输入文件路径并按回车键后,它会说失败并将我踢到菜单。如果我把 cin.sync((;Fin.sync 在哪里,它只会让我不断循环输入文件路径。请注意,它在菜单之外工作。我将如何修复它,以便它可以正确打开文件路径而不会出现问题,以便它可以处理信息?
1 - 将主代码更改为 do-while
, idk 为什么人们在这种情况下选择 while 循环。
do{
cout << "menu here";
cin >> UserAction;
if (UserAction == 1)
BA.getInstance(BA); //Input by keyboard. Works fine.
if (UserAction == 2)
BA.getInstance(BA, fin); //Input by file.
} while(UserAction!=0);
2 - fin.failed,因为它没有初始化,删除该行,它将正常工作。 尝试在fin.open();
后使用fin.fail()
相关文章:
- 如何选择在 csv 文件中输出的位置
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 选择文件对话框错误
- 限制用户可以在 QFileDialog 中选择的文件数量
- 如何从目录迭代器中选择特定文件并进行比较
- 如果在VC6中使用打开功能,如何选择文件夹?
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 如何从文件夹树中快速选择随机文件?
- 使用柯南和cmake选择文件
- C++ gtkmm:文件选择器对话框不适用于任何驱动器
- 使用文件对话框选择包含特定文件类型的文件夹?
- 如何选择文件保存到的位置?
- 如何为多个文件处理选择最佳的I/O策略
- 在为 Java 编译动态链接文件时,我应该选择哪些 g++ 参数
- C++文件选择窗口
- 仅为QFileSystemModel的第一列(驱动器、文件夹、文件)选择选项
- Qt中的文件选择
- CFileDialog多文件选择的问题
- 处理多个文件选择