嗨,伙计们,我正在完成上一次计算机科学课的任务。我觉得我做得很好,但有些事情是错的。你能看看它并告诉我在这里做什么。
这是我尝试在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();
}
答案 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;