fstream: How to take a float from ifstream and do math problems with it

I need to take a number from an ifstream inputFile, add or subtract (depending on what the user wants), do that operation with the number and then write it back into the file. It should end up looking like this in the file:

11/01/2017
Initial Deposit
1000
1000

11/14/2017
Titan Bookstore Online
-245.67
754.33

It has to work with more than 2 transactions. I am able to write the initial deposit and gather the date, transaction name, and amount but not the new total. My code so far is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//Checking if account exists
    cout << "Enter your 3-digit account number: ";
    cin >> accountNumber;
    
    
    stringstream ss;
    ss << accountNumber << ".dat";
    string filename = ss.str();
    
    fstream inB;
    inB.open(filename.c_str());
    
    
    if (inB.fail())
    {
        cout << endl << "ERROR: That account does not exist." << endl;
    }
    
    
    else
    {
        inB.close();
        
        cout << "Enter the date (mm/dd/yyyy): ";
        cin.ignore();
        getline(cin, date);
        
        cout << "Enter transaction title: ";
        cin.ignore();
        getline(cin, description);
        
        cout << "Enter transaction ammount : $";
        cin >> ammount;
        
        fstream outB;
        outB.open(filename.c_str(), fstream::app);
        
        outB << endl << date << endl << description << endl << ammount << endl;
        
        outB.close();
        
        stringstream ss;
        ss << accountNumber << ".dat";
        string filename = ss.str();
        string line;
        int balance, newBalance = 0;
        
        ifstream inB;
        inB.open(filename.c_str());
        
        if (inB.is_open())
        {

            inB >> balance;
            newBalance += balance;
            
            fstream outB2;
            outB2.open(filename.c_str(), fstream::app);
            
            outB2 << newBalance << endl;
            
            outB2.close();
            
            cout << endl << endl;

            while ( getline(inB, line))
            {
                cout << line << endl;
            }
        }
        
        inB.close();


Last edited on
Show me the code you're trying to used and someone may understand what you're doing wrong.
I updated the post
That's a good start, but you'll want to format that as code to make it more legible.
(The shortcut for code is to highlight the text and then click the <> button to the right.)
Just as my initial thoughts based on your project description, what you want to do is store your initial deposit into a float in a manner such as B >> number;, do your math, then output it as the final amount like B << number;. Upon looking at your code it seems that you're underutilizing the fstream, or using fstream erroneously when you want to be using ifstream for inB and ofstream for outB.

UPTADE 1: I've been testing your code myself and the first big issue I encountered was that your stringstream ss never got initialized. The first thing you should do with objects in C/C++ is either call a constructor on them or assign them something. ss << accountNumber << ".dat"; may include an assignment, but the compiler doesn't know that. Scratch what I said about stringstream. I'm learning too.
Last edited on
Registered users can post here. Sign in or register to post.
<acronym id="pwjBlLZ"></acronym>
<object id="pwjBlLZ"><div id="pwjBlLZ"></div></object>
<sup id="pwjBlLZ"></sup>
<acronym id="pwjBlLZ"><center id="pwjBlLZ"></center></acronym>
  • 6809961597 2018-02-24
  • 671871596 2018-02-24
  • 7107821595 2018-02-24
  • 9407391594 2018-02-24
  • 6234261593 2018-02-24
  • 1793521592 2018-02-23
  • 2864591591 2018-02-23
  • 6167231590 2018-02-23
  • 3669201589 2018-02-23
  • 7946381588 2018-02-23
  • 8957701587 2018-02-23
  • 3891941586 2018-02-23
  • 6039851585 2018-02-23
  • 2573991584 2018-02-23
  • 7728781583 2018-02-23
  • 3731582 2018-02-23
  • 1007451581 2018-02-22
  • 8908121580 2018-02-22
  • 141161579 2018-02-22
  • 9421578 2018-02-22