我正在阅读和编写使用c ++

时间:2018-05-08 05:35:58

标签: c++ c++11

嗨,伙计们,我正在完成上一次计算机科学课的任务。我觉得我做得很好,但有些事情是错的。你能看看它并告诉我在这里做什么。

这是我尝试在zybooks网站上提交时获得的内容: “你的程序没有输出” 预期: 莱恩赫姆勒 22.99 尼斯湖水怪 3.50 神奇女侠 123456.78

这是教授的指示:

构造

采用字符串参数并将其存储为fileName。不需要做任何其他事情。

追加:

将记录作为包含字符串和double的参数 使用fileName以追加模式打开输出文件流 将其精度设置为2并固定 输出名称,换行符,金钱,换行符

searchName:

使用fileName打开输入文件流 获取线和双提取成功时循环 如果string参数等于从getline读取的名称,则返回double 如果循环结束而没有找到任何内容,则返回-1表示找不到该名称。

的getData:

使用fileName打开输入文件流 构造一个ostringstream 将其精度设置为2并固定 获取线和双提取成功时循环 忽略>>左边的\ n萃取 将字符串,换行符,双行,换行符写入ostringstream 返回ostringstream

包含的字符串

这是我的主要内容:

#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();
}

1 个答案:

答案 0 :(得分:1)

感谢所有回复我帖子的人。我能够弄清楚程序中的错误。

错误是附加功能:  cout&lt;&lt; data.name&lt;&lt; ENDL;  cout&lt;&lt; data.money&lt;&lt; ENDL;

它应该是这样的:  out&lt;&lt; data.name&lt;&lt; ENDL;  out&lt;&lt; data.money&lt;&lt; ENDL;