Saad Arshad
Saad Arshad

Reputation: 33

I'm working on reading and writing to files with c++

Hi guys I'm working on my last assignment of the computer science class. I think I'm doing everything fine but something is wrong. Can you take a look at it and tell what I'm doing wronger here.

here is what I get when I try to submit online on zybooks site: "Your program produced no output" Expected: Ryan Hermle 22.99 Lochness Monster 3.50 Wonder Woman 123456.78

here are instructions from professor:

Constructor:

Takes a string parameter and stores that as fileName. Does not need to do anything else.

append:

Takes a record as a parameter that contains a string and a double Open an output file stream in append mode using fileName set its precision to 2 and fixed Output the name, newline, the money, newline

searchName:

Open an input file stream with fileName Loop while a getline and a double extraction are successful if the string parameter is equal to the name read from the getline, then return the double If the loop finishes without finding anything, return -1 to indicate that name was not found.

getData:

Open an input file stream with fileName Construct an ostringstream Set its precision to 2 and fixed Loop while a getline and a double extraction are successful ignore the \n left by the >> extraction write the string, newline, double, newline to the ostringstream return the string contained by the ostringstream

here is my main:

#include "Database.h"

int main()
{
    Database db("data.txt");
    db.append(Record{"Ryan Hermle", 22.99});
    db.append(Record{"Lochness Monster", 3.50});
    db.append(Record{"Wonder Woman", 123456.78});
}

and here is my Database.cpp file:


#include "Database.h"

Database::Database(string file)
{
    fileName = file;
}

void Database::append(Record data)
{
    ofstream out;
    out.open(fileName, ios::app);
    out << setprecision(2) << fixed;
    cout << data.name << endl;
    cout << data.money << endl;
    out.close();
}

double Database::searchName(string n)
{
    Record s;
    ifstream in;
    in.open(fileName);
    while (getline(in, n) >> s.money)
    {
        in.ignore();
        if (n == s.name)
        {
            return s.money;
        }
    }
    return -1;
}

string Database::getData()
{
    Record s;
    ifstream ifs;
    ifs.open(fileName);
    ostringstream oss;
    oss << setprecision(2) << fixed;
    while(getline(ifs, s.name) >> s.money)
    {
        ifs.ignore();
        oss << s.name << endl << s.money << endl;
        cout << oss.str();
    }
     return oss.str();
}

Upvotes: 0

Views: 477

Answers (1)

Saad Arshad
Saad Arshad

Reputation: 33

Thanks for everyone who replied to my post. I was able figure out the error in my program.

The error was in append Function: cout << data.name << endl; cout << data.money << endl;

It should be like this: out << data.name << endl; out << data.money << endl;

Upvotes: 1

Related Questions