Here is some part of my main:
int main() {
Inventory Master;
bool flag;
Customer Bob("Bob", "CreditCard.txt");
Customer Chris("Chris", "CreditCard.txt" );
}
Here is my method:
Customer::Customer( string n, string fileName ) {
name = n;
ifstream Credit;
Credit.open(fileName.c_str(), ios::in);
while( Credit.good() && !Credit.eof() ) {
Credit >> card >> balance >> ws;
cout << card <<"\t" << balance << endl;
}
CreditCard _CC( int card, double balance);
}
Here is my “CreditCard.txt file:
12345 15.00
32564 20.00
The way I wanted the info to display is have line 1 “12345 15.00” assigned to Bob and line 2 assigned to Chris and do that so on and so forth if i make new instances or objects of a customer. However the way I currently implemented it is it keeps assigning “12345 15.00 and 32564 20.00” to both Bob and Chris. I could appreciate the help if someone could SHOW me how to somehow point to certain lines of the text file so Bob is assigned to line 1, Chris to line 2, and more customers to other lines when i add them in the text file.
Everything you’re doing to Bob and Chris happens inside the constructor. So, as written, your code says: while the stream is in good condition and it’s not the end of the file(key point), write to here.
Well, if you think about it, this will read until the end of the file is reached for each instance of
Customer. That’s not what you want. I might suggest adding the name as the first field in the data file for each record. You could then search the file for the correct record, assuming you ensure the names are all uniquely defined, then pull the data out string by string. That way it’s not reading from the beginning to the end each time. I added “Bob” as the first field on line 1, and “Chris” to line 2 and madestring name = "Chris";. So…}
The way you’re doing it will cause problems. The only way that it would work for sure is if you knew where the record was at in the file. What if you had five records? By the time you got to the third one you would have to
ignore, or similar, all the fields prior to the one you’re working on. Also, it could be handy for a human to read a print out of the data file. Another reason to provide a label(name) to each record. Also, you’re apparentlyusing namespace std;, so I did too, but it’s frowned upon.