【发布时间】:2019-12-11 23:10:21
【问题描述】:
我正在编写一个银行程序来练习我的 C++ 技能,但我一直在读/写文件。我正在将一些基本信息(姓名、帐号、密码、余额)存储到一个文件中,并且希望能够在我打开程序的任何时候从该文件中读取。我做了一个简单的类叫做客户端:
class client
{
public:
int acctNum;
string firstName;
string lastName;
float balance;
int pin;
}
我将信息保存到按帐号、密码、名字、姓氏和余额格式化的 txt 文件:
1 88 Doug Dimmadome 5
我在输入文件上的循环只读取帐号,并且连续不断地这样做(inFile 是我的 ifstream 的变量名,clientList 是我的一组客户端的变量名):
while (!inFile.eof()) {
inFile >> acc;
cout << acc << endl;
clientList[acc].acctNum = acc;
inFile >> clientList[acc].pin;
inFile >> clientList[acc].firstName;
inFile >> clientList[acc].lastName;
inFile >> clientList[acc].balance;
}
我在循环中做错了什么,导致它无法正确循环文件中的所有数据?
--------编辑------ 我正在添加我的变量声明并打开我的文件:
client clientList[maxClients];
client currTrans;
int choice = NULL;
char atm = 'y';
ifstream inFile;
ofstream file;
const string fileName = "clientList.txt";
int acc;
inFile.open(fileName);
if (!inFile.is_open()) {
cout << "File could not open.";
return 1;
}
还有我的客户端构造函数:
client::client() {
acctNum = NULL;
firstName = "";
lastName = "";
balance = NULL;
pin = NULL;
}
【问题讨论】:
-
我看不到你在哪里创建
clientList[acc]... clientList 的类型是什么?你试过调试吗?发生了什么,而不是你所期望的?文件中是否有人姓名超过 2 个? -
这很可能是由于未能正确检查输入流的错误状态造成的。你的调试器显示什么?如果您不知道如何使用调试器,这是一个学习如何使用它一次一行地运行程序并了解会发生什么的好机会。知道如何使用调试器是每个 C++ 开发人员必备的技能,没有例外。在调试器的帮助下,您应该能够快速找到此程序以及您编写的所有未来程序中的所有错误,而无需向任何人寻求帮助。
-
@Ya_Boi 您能否也将数组 clientList 的内容以及您如何在问题中创建 ifstream inFile ?