C++ Fstream正在耗尽我的生命

C++ Fstream正在耗尽我的生命,c++,fstream,ifstream,ofstream,C++,Fstream,Ifstream,Ofstream,我有一个计算机类的代码编写作业,其中包括fstream类。我必须编写管理和存储用户数据的代码。 我很难在课堂上理解这个概念,C++教科书只想让我看到IPO图表而不是代码。 如果有人能帮助我编写代码,以及如何将用户输入的数据存储在记事本上,我将不胜感激。 提前谢谢你的帮助,我已经找了好几天了,还没找到答案 #包括 #包括 #包括 使用名称空间std; const int MAXLASTNAME=20; const int MAXFIRSTNAME=10; const int MAXPLAYERS

我有一个计算机类的代码编写作业,其中包括fstream类。我必须编写管理和存储用户数据的代码。
我很难在课堂上理解这个概念,C++教科书只想让我看到IPO图表而不是代码。 如果有人能帮助我编写代码,以及如何将用户输入的数据存储在记事本上,我将不胜感激。
提前谢谢你的帮助,我已经找了好几天了,还没找到答案

#包括
#包括
#包括
使用名称空间std;
const int MAXLASTNAME=20;
const int MAXFIRSTNAME=10;
const int MAXPLAYERS=20;
结构棒球{
char FirstName[MAXFIRSTNAME+1];
char LastName[MAXLASTNAME+1];
浮动AB;
浮动单打;
浮动双打;
浮动三元组;
浮动人力资源;
漂浮行走;
双BA;
双SA;
双卵圆;
};
int getData(棒球[]);
void showData(棒球[],int);
int main()
{
棒球数据[超级球员];
int players=getData(stats);
显示数据(统计数据、玩家);
}
//函数:int getData
//描述:获取用户希望输入的所有玩家的数据
//输入:平均值的数字数据和玩家姓名的字符
//输出:无
int getData(棒球统计数据[])
{
国际一级,球员;
cout>玩家;

cout您可以调整
showData
函数以使用
std::ofstream
代替
std::cout

bool writeData(Baseball stats[], int players, std::string const& filePath)
{
    std::ofstream ofs(filePath);

    if(!ofs.is_open())
        return false; // failed to open stream

    ofs << endl << endl;
    ofs << "lets see how this aquasock stats stack up!\n\n";


    ofs << "First Name" << setw(14) << "Last Name" << setw(6) << "AB" << setw(6) << "1B" << setw(6) << "2B";
    ofs << setw(6) << "3B" << setw(6) << "HR" << setw(6) << "BB" << setw(6) << "BA" << setw(6) << "SA";
    ofs << setw(6) << "OBA" << "\n";


    ofs << "----------" << setw(14) << "---------" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
    ofs << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
    ofs << setw(6) << "---" << "\n";


    for(int i = 0; i < players; ++i)
    {
        ofs << stats[i].FirstName
             << setw(15) << stats[i].LastName
             << setw(8) << stats[i].AB
             << setw(8) << stats[i].singles
             << setw(8) << stats[i].doubles
             << setw(8) << stats[i].triples
             << setw(8) << stats[i].HR
             << setw(8) << stats[i].walks
             << setw(8) << stats[i].BA
             << setw(8) << stats[i].SA
             << setw(8) << stats[i].OBA
             << endl;
    }

    return true;
}
并将
cout
s更改为
os
s。然后您可以使用它写入控制台:

writeData(stats, players, std::cout);
或文件:

std::ofstream ofs(filePath);

if(!ofs.is_open())
{
    // error
}

writeData(stats, players, ofs);

我希望这能解决你的疑问。

顺便说一句,你确定一名球员的BA是根据所有其他球员的累积统计数据计算出来的(参考
getData
中的
sum+=…
)?这非常有帮助,我非常感谢你。存储代码中的数据真的那么简单吗?难怪我弄错了,我觉得每一行都必须有一个流修饰符。再次感谢你的帮助出于某种奇怪的原因代码现在无法编译,codebloc告诉我在我的int main中没有匹配函数。@mcmoroge LogicStuff已正确回答了您的问题。正确的回答是。您现在遇到了一个新问题,这显然是由您自己的编码错误造成的。如果您无法尽最大努力解决此问题,请随意问另一个问题。接受正确的答案会增加您获得fu答案的机会R还有其他问题。@mcmoroge我打赌你忘了更改/添加
writeData的前向声明
,或者没有更改
showData(统计数据,玩家);
,如果你已经覆盖/删除了它。@MikeKinghan我明白你的意思,谢谢你让我知道,我只是被编码弄得不知所措,我认为所有的问题都是相关的。
std::ofstream ofs(filePath);

if(!ofs.is_open())
{
    // error
}

writeData(stats, players, ofs);